PhoneGap,jQuery getJSON和CORS

时间:2013-06-18 03:49:35

标签: android jquery ajax cordova cors

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

我正在尝试使用CORS从PHP上的WS获取JSON,但是我收到错误,并且错误消息为空。我在Web浏览器中测试了代码并且它可以工作。但是,当我在PhoneGap中使用它时,它没有用。我使用Fecebook WS在PhoneGAp中测试了我的代码并且它可以工作。这是我测试的组合:

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

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

测试3
来源:PhoneGap
WebService: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"]}

谢谢,

3 个答案:

答案 0 :(得分:0)

在ajax调用中,尝试添加

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

答案 1 :(得分:0)

$ .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); }
});

谢谢,

答案 2 :(得分:0)

好消息!!

我解决了这个问题。两种方法getJSON和ajax都在工作,问题是服务器。

当我从外部服务器(而不是localhost)访问Web服务时,它工作正常。

谢谢,