在PhoneGap中使用跨域发布数据

时间:2013-10-22 14:29:49

标签: javascript php jquery curl cordova

我有两页 html页面:form和jquery ajax函数将数据发布到php
php页面:接收数据并使用curl将它们发送到服务器
简而言之:
html,ajx -data-> php -curl->服务器
他们都工作得很好 现在我将它们移动到phonegap中。由于相同的原始政策,我无法将它们发送到另一个域。然后我改用jsonp。

var data = "test";
$.ajax({
    type: "GET",
    dataType: "jsonp",
    url: "http://xx.xx.com/xx/receive.php?callback="+data,
    success: function(data){
       alert(data);
    }
}
============================================================
receive.php:
<?php
   $abc = $_GET["callback"];
   echo $abc;
?>

这不起作用。我无法得到警报信息。有人可以告诉我发生了什么吗?或者,是否有其他方式将数据发布到另一个域服务器? 干杯!

2 个答案:

答案 0 :(得分:0)

请注意,您必须将您的域列入白名单或将*用于访问所有人,在浏览器中进行开发时,也会抛出跨域错误,当手机上的phonegap部署时,错误不会发生。

您可以尝试在Google Chrome中使用 - disable-web-security 标记,或使用 JSONP 在桌面上进行开发

答案 1 :(得分:0)

您已指定dataType:“jsonp”
这意味着您期望服务器将返回jsonp数据

来自official jquery ajax documentation
"dataType (default: Intelligent Guess (xml, json, script, or html))
Type: String
The type of data that you're expecting back from the server. If none is specified, jQuery will try to infer it based on the MIME type of the response (an XML MIME type will yield XML, in 1.4 JSON will yield a JavaScript object, in 1.4 script will execute the script, and anything else will be returned as a string)."

尝试删除dataType参数 或者您可以将错误回调设置为警告错误。我认为你可以很容易地追踪错误。