在Phonegap模拟器/ iPhone中解析JSON与通过浏览器
Parsing JSON in Phonegap simulator/iPhone vs. through browser
我正在使用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之一),但没有一个像使用Firebug那样好。
我
昨天遇到了同样的问题,在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) . ');'
关于同一源策略的内容,因为您的本地目录与服务器不在同一域中。 显然 jsonp(p 代表填充)可以跨域工作,我会在找到它后立即发布解释这一点的文章。
更新:这是我得到提示的地方,也许你已经用谷歌搜索过了
希望我能给你.NET代码,但我希望这有所帮助
简单的小事。
需要为调用中的参数添加数据类型:"json",以便它在 Web 端工作。
相关文章:
- 如何:浏览器将JSON发送到服务器
- JSON-从浏览器向外部服务器发送哪些http头JSON文件
- Json到CSV下载,可以在chrome中工作,但不能在IE浏览器中工作
- 从web浏览器通过javascript向侦听TCP端口5500的本地应用程序发送json命令
- 谷歌图表未在浏览器/JSON中显示
- 点击浏览器的“后退”按钮显示的是JSON而不是HTML(使用Rails和d3.js)
- 将 package.json 用于客户端包,可以在浏览器中动态加载
- 如何在浏览器中触发另存为对话框,以便可以在内存中保存 json 数据
- 为什么它不将 JSON 返回到浏览器
- 在Phonegap模拟器/ iPhone中解析JSON与通过浏览器
- 在系统浏览器中打开JSON链接-Cordova
- 将JSON对象转换为敲除observable在IE8中不起作用,但在所有其他浏览器中都起作用
- 如何在浏览器中解析连接的JSON字符串
- 如何在浏览器中压缩json请求数据
- JSON无法与Opera Mini浏览器配合使用
- 使用 JSON 和 ExtJS 将 MPDF 结果返回给浏览器
- 在浏览器工具中加载 JSON 数据,但不在网页上加载
- 如何在谷歌浏览器应用程序上发布JSON
- 从浏览器将 JSON 写入文件
- Node.js API 在终端中返回 JSON,但不在浏览器中返回 JSON