我有一个非常基本的jqm / phonegap应用程序
这是我的HTML
<html>
<head>
<title>jQuery Mobile Web App</title>
<link href="jquery-mobile/jquery.mobile-1.0.min.css" rel="stylesheet" type="text/css"/>
<link href="style.css" rel="stylesheet" type="text/css">
<script src="jquery-mobile/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="jquery-mobile/jquery.mobile-1.0.min.js" type="text/javascript"></script>
</head>
<body >
<div data-role="page" id="home" >
<div data-role="header">
<h1>p</h1>
</div>
<div data-role="content" style="text-align:right" id="c1">
</div>
</div>
</div>
</div>
这是我的js代码,它放在html代码的主体中
<script>
function get_news_list(id , link_ , refresh_ ){
jQuery.support.cors = true;
$.ajax({
url : link_ ,
success:function(data){
$('#c1').html(data);
} ,
error : function(data) {
alert(data.toSource);
}
});
}
get_news_list('latest' , 'http://pnup.ir/?feed=json' , refresh_);
</script>
当我将其作为网页运行时,我得到了
此警报 如果是firefox
function toSource() {
[native code]
}
in chrome
undefined
我认为这是确定的,因为它是一个跨域的ajax请求,它在Web浏览器中失败(尽管在firebug中它的状态是好的200它只是不返回任何响应)
但是当我在我的Android设备上测试时,我会得到相同的undefined
。我认为跨域ajax请求一旦我作为Android设备中的应用程序符文它不是问题?
答案 0 :(得分:1)
我最近在我的一个phonegap + jquerymobile项目中实现了jsonp,我遇到了同样的问题,但是我使用了asp.net作为我的服务
调用下面的服务为我工作所有你需要做的就是添加?fnCallBack =?在网址的末尾
$.ajax({
url : link_+'?fnCallBack=?',
contentType : "application/json; charset=utf-8",
dataType : "json",
jsonp : 'json',
cache : false,
success : function(result) {
if (result != 'Error') {
var valX = JSON.stringify(result);
valX = JSON.parse(valX);
} else {
navigator.notification.alert("An error occured, Please try later");
}
}
});
并且在服务器端发送json响应时,只需像这样添加fnCallBack
string jsoncallback = context.Request["fnCallBack"];
context.Response.Write(string.Format("{0}({1})", jsoncallback,jsonData));
这样我解决了我的跨域问题,所以希望你能从这个
中获得线索