我正在开发一个使用Phonegap的iPhone应用程序,前端只有JS / HTML5,后端有.NET。对于登录,我只是调用Web服务并获取JSON。我遇到的问题是在桌面浏览器中调试它而不是在实际的手机/模拟器上调试它。
当存在有效登录时,检索到的JSON如下所示:
{"AuthToken":null,"Errors":[],"Success":true,"Message":null,"IsValid":true}
所以我有这个Ajax success
函数(jQuery):
success: function (data) {
//this works on phone, but not in browser
var success = data.Success; //returns true
//this works in browser, but errors out on phone
var dta = JSON.parse(data);
success = dta.Success //returns true;
}
知道为什么会这样或者我如何纠正它?我只是更容易使用Firebug在浏览器中进行调试,而不是总是使用模拟器。我一直在使用其他一些调试方法(Weinre for one),但没有一个像使用Firebug一样好。
答案 0 :(得分:1)
昨天我遇到了同样的问题,在iPhone上流畅但不在网上,很烦人。
经过一些搜索,我发现,如果您设置了dataType: 'jsonp'
,并设置了回调函数jsonp: 'jsoncallback'
我的处理程序看起来像这样:
$('form').on('submit', function(event){
var myData = $(this).serialize();
jQuery.ajax({
url: 'www.mysite.com/submit.php',
type: 'POST',
data: myData,
dataType: 'jsonp',
jsonp: 'jsoncallback',
success: function(data, textStatus, jqXHR){
alert('success: ' + data)
},
error: function(jqXHR, textStatus, errorThrown){
alert('error')
}
});
return false;
})
在服务器端,我以:
结束echo $_GET['jsoncallback'] . '(' . json_encode($myData) . ');'
有关same origin policy的信息,因为您的本地目录与您的服务器不在同一个域中。显然jsonp(p为填充)可以跨域工作,我会在发现后立即发布解释这个的文章。
更新: Here's where I got the tipoff也许你已经用Google搜索了
希望我能给你.NET代码,但我希望这有帮助
答案 1 :(得分:0)
简单的小东西..
需要为调用参数添加dataType:“json”,以使其在Web端工作。