JQuery JSON调用PHP WebService始终运行“错误”回调
我现在头疼,因为我整天都遇到这个问题,但仍无法修复。 我已经看了谷歌和StackOverflow几个小时,尝试了很多方法(包括从JSON更改为JSONP,检查PHP上的标题,localhost测试),问朋友等等,我仍然卡住了。 也许这只是一个细节,我不知道。
我正在研究Android移动应用程序,为此,我在托管(例如,example.com)上有一个PHP Web服务,因为我使用PHP WS JSON客户端进行测试,所以工作正常。 问题是我现在使用jQuery,JSON和Ajax从我的计算机上的JS文件中调用此WS,我从Google Chrome的调试器控制台得到以下响应:
- readyState:4
- statusText:“确定”
- responseText :(我需要什么,没有错误)
但是在服务器的响应中, 我总是收到错误回调,而不是成功 。 我读它是因为服务器无法正确解析JSON,但我真的不知道。
我告诉你我的代码。
来自CLIENT.JS:
$.ajax({ type: "POST", crossDomain: true, contentType: "application/json utf-8", dataType: "json", url: "http://www.example.com/ws/webservice.php/" + methodName, data: JSON.stringify(window.parameterArray), success: function (response) { alert('Success!'); window.resultVar = "Success! " + response; console.log(response); }, error: function (response) { alert('Error'); window.resultVar = "Error: " + response; console.log(response); } });
来自SERVER.PHP:
有谁知道可以做些什么? 也许,正如我之前所说,问题只是一个细节。 我真的不知道,我对这种事情有点新意。
在正手感谢!
更新:
我刚刚意识到Chrome控制台告诉我这个:
GET http://localhost:81/.../cordova_plugins.json 404 (Not Found)
这可能是问题的原因吗?
更新2:
看这里,我有一个线索。 我在错误函数中添加了更多参数,并得到了自己的结果:
(错误的变化是从函数(响应)到函数(jqXHR,textStatus,errorThrown) )
jqXHR.responseText: [an array with the info I'm asking] errorThrown: "SyntaxError: Unexpected token"
因为您正在进行跨域调用,所以您需要使用JSONP。 PHP服务器必须形成如下响应:callback(jsonSyntax);
更改
contentType: "application/json utf-8",
至
contentType: "application/json; charset=utf-8",
您的contentType
标头的错误信息导致您的服务器错误地解释您的POST
请求的内容。
尝试更改JQuery URL:
http://www.example.com/ws/webservice.php/methodName
至:
http://www.example.com/ws/webservice.php?method=methodName
然后尝试从PHP的$ _GET [‘method’]中读取它,我认为这应该是你的问题
只需更改对文本的响应,然后将文本解析为JSON,例如:
var json = JSON.parse(data);