我正在嘗試使用Phonegap和jQuery創建一個簡單的RSS閱讀器。 我正在關注本教程:http://visualrinse.com/2008/09/24/how-to-build-a-simple-rss-reader-with-jquery/。使用Phonegap應用程序執行ajax請求的問題
當我在瀏覽器中試用代碼時,我已經成功實現了這項工作。 php文件提取feed並將其輸出,就像我期望的那樣。 但是,當我從編譯的Phonegap應用程序中運行相同的文件時,ajax-request只返回php文件(php代碼,而不是執行結果)的內容。
我花了幾個小時搜索這個,並嘗試了大量的教程和調整。我在官方的Phonegap論壇上也找不到解決方案。我究竟做錯了什麼?這個問題似乎是PHP沒有迴應請求。我試圖將php文件移到不同的域,但結果是一樣的,它在我的瀏覽器中工作,但不在編譯的應用程序中。
這裏是jQuery代碼初始化Ajax代碼:
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();
}
});
};
這裏的RSS-proxy.php從URL和輸出加載XML它:
<?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
?>
我建議從代碼中刪除該IP地址。 – sciritai
當您在模擬器或設備上的瀏覽器中打開'.php'文件時會發生什麼? PHP是否被執行? – Marko
感謝您的評論!我試圖從模擬器中的瀏覽器訪問'.php'文件,它可以工作。但它只適用於我將網址更改爲相對而非絕對:'url:'rss-proxy.php?url = http://www.nytimes.com/services/xml/rss/nyt/GlobalHome.xml' '。如果我現在使用移動Safari瀏覽器訪問我的Phonegap應用程序的www文件夾中的index.html文件,該文件夾位於我的「htdocs」目錄中的本地MAMP服務器上,它就可以工作!但不是從編譯的Phonegap應用程序。當然,'.php'文件與其他腳本文件一起位於www文件夾中。 – user1029978