Tôi đang cố tạo một trình đọc RSS đơn giản với Phonegap và jQuery. Tôi đang làm theo hướng dẫn này: http://visualrinse.com/2008/09/24/how-to-build-a-simple-rss-reader-with-jquery/.Các sự cố khi thực hiện yêu cầu ajax bằng ứng dụng Phonegap
Tôi đã cố gắng làm việc này tốt khi tôi thử mã trong trình duyệt của mình. Tệp php tìm nạp nguồn cấp dữ liệu và xuất kết quả giống như tôi mong đợi. Nhưng khi tôi chạy cùng một tệp từ bên trong ứng dụng Phonegap đã biên dịch, yêu cầu ajax chỉ trả lại nội dung của tệp php (mã php, không phải kết quả được thực thi).
Tôi đã bỏ ra hàng giờ Google và thử nhiều hướng dẫn và chỉnh sửa. Tôi không tìm thấy giải pháp nào trong diễn đàn chính thức của Phonegap. Tôi đang làm gì sai? Vấn đề có vẻ là PHP không đáp ứng yêu cầu. Tôi đã cố gắng để di chuyển các tập tin php vào một tên miền khác nhau nhưng kết quả là như nhau, nó hoạt động trong trình duyệt của tôi nhưng không phải trong các ứng dụng biên dịch.
Dưới đây là đoạn code jQuery mà khởi ajax-code:
function get_rss_feed() {
//clear the content in the div for the next feed.
$("#feed_content").empty().html('<img class="loader" src="js/images/ajax-loader.gif" alt=""/>');
$.ajax({
url: 'http://192.168.1.7/rssApp/www/rss-proxy.php?url=http://www.nytimes.com/services/xml/rss/nyt/GlobalHome.xml',
success: function parseRSS(d) {
//find each 'item' in the file and parse it
$(d).find('item').each(function() {
//name the current found item this for this particular loop run
var $item = $(this);
// grab the post title
var title = $item.find('title').text();
// grab the post's URL
var link = $item.find('link').text();
// next, the description
var description = $item.find('description').text();
//don't forget the pubdate
var pubDate = $item.find('pubDate').text();
// now create a var 'html' to store the markup we're using to output the feed to the browser window
var html = "<div class=\"entry\"><h2 class=\"postTitle\">" + title + "<\/h2>";
html += "<em class=\"date\">" + pubDate + "</em>";
html += "<p class=\"description\">" + description + "</p>";
html += "<a href=\"" + link + "\" target=\"_blank\">Read More >><\/a><\/div>";
//put that feed content on the screen!
$('#feed_content').append($(html));
});
$('#feed_content img.loader').fadeOut();
}
});
};
Đây là rss-proxy.php rằng tải XML từ url và đầu ra nó:
<?php
// PHP Proxy
// Loads a XML from any location. Used with Flash/Flex apps to bypass security restrictions
// Author: Paulo Fierro
// January 29, 2006
// usage: proxy.php?url=http://mysite.com/myxml.xml
$session = curl_init($_GET['url']); // Open the Curl session
curl_setopt($session, CURLOPT_HEADER, false); // Don't return HTTP headers
curl_setopt($session, CURLOPT_RETURNTRANSFER, true); // Do return the contents of the call
$xml = curl_exec($session); // Make the call
header("Content-Type: text/xml"); // Set the content type appropriately
echo $xml; // Spit out the xml
curl_close($session); // And close the session
?>
Tôi khuyên bạn nên xóa địa chỉ IP đó khỏi mã. – sciritai
Điều gì sẽ xảy ra khi bạn mở tệp '.php' từ trình duyệt trên trình mô phỏng hoặc thiết bị? Liệu PHP có được thực hiện? – Marko
Cảm ơn các ý kiến! Tôi đã cố gắng truy cập tệp '.php' từ trình duyệt trong trình mô phỏng và nó hoạt động. Nhưng nó chỉ hoạt động nếu tôi thay đổi URL là tương đối, không tuyệt đối: 'url: 'rss-proxy.php? Url = http: //www.nytimes.com/services/xml/rss/nyt/GlobalHome.xml' '. Nếu bây giờ tôi sử dụng trình duyệt Safari trên điện thoại di động để truy cập tệp index.html trong thư mục www của ứng dụng Phonegap mà tôi đang lưu trữ trên máy chủ MAMP cục bộ trong thư mục 'htdocs' của nó, nó hoạt động! Nhưng không phải từ ứng dụng Phonegap được biên dịch. Và tất nhiên, tệp '.php' nằm trong thư mục www cùng với các tệp tập lệnh khác. – user1029978