ajax 和 jsonp 的 PhoneGap 问题
Posted
技术标签:
【中文标题】ajax 和 jsonp 的 PhoneGap 问题【英文标题】:PhoneGap Issues with ajax and jsonp 【发布时间】:2014-01-01 01:38:08 【问题描述】:我想向我的远程服务器发出 AJAX 调用,上传一些参数并下载一些内容。此脚本在浏览器中完美运行,但不适用于 PhoneGap(在 Ripple、chrome 上测试)。
我查看了以下问题和解决方案:
PhoneGap not issuing AJAX (jsonp) request
Issues with jQuery, ajax, and jsonp
Ajax 调用:
$.ajax(
url: "https://mydomain.com/file.php",
data: test:"test",
type: 'GET',
dataType: 'jsonp',
timeout: 5000,
success: function(data)
if(data['var'] == 'correct')
notifyAlert('correct','Login');
else
notifyAlert('incorrect','Login');
,
error: function(x,e)
if(x.status==0)
notifyAlert('You are offline!!\n Please Check Your Network.', 'Error');
else if(x.status==404)
notifyAlert('Requested URL not found.', 'Error');
else if(x.status==500)
notifyAlert('Internel Server Error.', 'Error');
else if(e=='parsererror')
notifyAlert('Error.\nParsing JSON Request failed. '+x.status, 'Error');
else if(e=='timeout')
notifyAlert('Request Time out.');
else
notifyAlert('Unknow Error.\n'+x.responseText, 'Error');
);
远程服务器代码:
$record = array('var' => 'correct');
echo $_GET['callback'] . '(' . json_encode($record) . ');';
我的 config.xml 文件有:
<access origin="https://mydomain.com" />
在 Ripple(模拟器)上进行测试时,它给了我状态 0 错误。在我的本地服务器上(通过浏览器)测试相同的脚本时,它会给我正确的 var 警报。
我还测试了一个 json 调用,它在模拟器中完美运行,但是当我将 apk 上传到我的手机时它不起作用。与上述 jsonp 问题的结果相同(状态 0 错误)。
【问题讨论】:
Ripple 模拟器似乎有问题。用eclipse测试了相同的代码,一切正常!它可能是 Ripple 中的 cordova 版本,但在使用 cordova 2.0.0 版本对其进行测试后,它仍然给了我状态 0 错误。我唯一能想到的是我的 config.xml 是错误的,但这并不能解释 json 测试有效而 jsonp 测试无效的事实。 【参考方案1】:终于找到问题了。这是我的 SSL 证书的问题。我在带有未签名证书的服务器上进行了测试,结果给了我不正确的响应。使用签名证书解决了我所有的问题..
【讨论】:
以上是关于ajax 和 jsonp 的 PhoneGap 问题的主要内容,如果未能解决你的问题,请参考以下文章