PhoneGap、jQuery getJSON 和 CORS

Posted

技术标签:

【中文标题】PhoneGap、jQuery getJSON 和 CORS【英文标题】:PhoneGap, jQuery getJSON and CORS 【发布时间】:2013-06-14 03:48:08 【问题描述】:

我正在开发基于 PhoneGap 的移动应用程序。我需要使用 AJAX,我正在使用 jQuery。

我正在尝试使用 CORS 从 php 上的 WS 获取 JSON,但出现错误,并且错误消息为空。我在 Web 浏览器中测试了代码,它可以工作。但是,当我将它与 PhoneGap 一起使用时,它不起作用。我用 Fecebook WS 在 PhoneGAp 中测试了我的代码,它可以工作。这是我测试的组合:

测试 1 来源:file:///C:/.../index.html(网络浏览器) 网络服务:http://localhost/.../getemployees.php 结果:有效

测试 2 来源:PhoneGap 网络服务:http://localhost/.../getemployees.php 结果:它不起作用

测试 3 来源:PhoneGap 网络服务:https://graph.facebook.com/OldemarshCr 结果:有效

这是代码:

$.getJSON(url, function (data) console.log(data);)
.success(function()  console.log("second success"); )
.error(function(jqXHR, textStatus, errorThrown) 
console.log('******* '+"error: " + textStatus+' *******');
);

这是 JSON 响应:

"items":["id":"10","firstName":"Kathleen","lastName":"Byrne","title":"Sales Representative","picture":"kathleen_byrne.jpg","reportCount":"0","id":"9","firstName":"Gary","lastName":"Donovan","title":"Marketing","picture":"gary_donovan.jpg","reportCount":"0","id":"7","firstName":"Paula","lastName":"Gates","title":"Software Architect","picture":"paula_gates.jpg","reportCount":"0"]

谢谢,

【问题讨论】:

你用安卓模拟器吗? 【参考方案1】:

在ajax调用中,尝试添加

         $.ajax(
                crossDomain: true,                 
                xhrFields: withCredentials: true
              );

【讨论】:

我没有使用ajax方法,但我会尝试使用它【参考方案2】:

$.ajax 不起作用...这是我得到的错误

"readyState":0,"responseText":"","status":0,"statusText":"error"

我在网络浏览器上测试了代码,它工作正常。

这是代码:

$.ajax(
  crossDomain: true,  
  xhrFields: withCredentials: true,
  type: 'GET', 
  url: url, 
  dataType: 'json', 
  success: function(response) console.log(response); 
  error: function(error) console.log('Error: '+error); 
);

谢谢,

【讨论】:

【参考方案3】:

好消息!!

我解决了这个问题。 getJSON 和 ajax 这两种方法都有效,问题出在服务器上。

当我从外部服务器(不是本地主机)访问 Web 服务时,它可以工作。

谢谢,

【讨论】:

以上是关于PhoneGap、jQuery getJSON 和 CORS的主要内容,如果未能解决你的问题,请参考以下文章

在 WP7 PhoneGap (Cordova) 应用程序 (v1.5) 中使用 $.getJSON

jQuery 中 $.getJSON() 和 $.ajax() 的区别

jQuery $.getJSON 和遍历数组正在倾尽全力

jQuery .getJSON 返回到数组变量和 json 数组操作

jQuery的getjson问题 用getjson获取一个文本文件 代码和症状如下

什么是 Jquery 的 $.getJSON 的香草 JS 版本