phonegap Android跨域不工作
Posted
技术标签:
【中文标题】phonegap Android跨域不工作【英文标题】:phonegap Android crossdomain not working 【发布时间】:2012-06-22 07:07:29 【问题描述】:$('#loginForm').submit(function()
$("#loginsubmit",this).attr("disabled","disabled");
var u = $("#loginemail", this).val();
var p = $("#loginpassword", this).val();
var postTo = 'http://www.example.com/login.php';
if(u != '' && p!= '')
//navigator.notification.alert("not empty"+u, function() );
var apiurl = "http://www.mapyi.com/api/mapyi/client.php?"+"action=verlogin&pass="+p+"&email="+u;
$.ajax(
url: apiurl,
dataType: 'jsonp',
jsonp: 'jsoncallback',
timeout: 5000,
success: function(data)
navigator.notification.alert("not empty"+data);
,
error: function(msg)
navigator.notification.alert("ERROR"+msg);
);
/* end if u and p */
//hide();
//$('#homepage').show();
return false;
);
我在 phonegap.xml 中添加了访问权限,还为 android 添加了更新 manifest.xml。 php 响应在 json 中:
/* PHP CODE SErver side */
/* output in necessary format JSON */
header('Content-type: application/json');
echo json_encode(array('posts'=>$ret));
我不知道我错过了什么,它总是显示带有输出 ERROR [object] [object] 的 ERROR 对话框
**已解决 我自己解决了,我没有在 php 服务中添加标题信息。 header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']); header('Cache-Control: no-cache, must-revalidate'); 感谢 CODER DECODER ENCODER 抽出宝贵时间**
【问题讨论】:
【参考方案1】:您的请求代码看起来很完美。我认为您错过了服务器端的 json 回调。像这样返回服务器数据,
echo $_GET['jsoncallback'] .json_encode(array('posts'=>$ret));
【讨论】:
已解决我没有在 php 响应标头中发送标头信息('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']); header('Cache-Control: no-cache, must-revalidate'); 感谢 Coder Decoder Encoder,这也是问题所在,并通过使用 GET 添加 jsoncallback 来解决。以上是关于phonegap Android跨域不工作的主要内容,如果未能解决你的问题,请参考以下文章
Android PhoneGap Plugin, UI tabbar, resize WebView