您好我有以下代码
var dataString = "email=jdoe@example.com&fname=John&lname=Doe&phone=7851233&vid=726&size=2&date=2013-05-28%202:15%20PM&request=Testing%20A%20Message";
$.ajax({
type: "GET",
timeout: 5000,
url: "http://www.livepicly.com/app/api.php?method=add_reservation",
data: dataString,
success: function(data, textStatus) {
alert(data.result);
},
error: function(xhr, textStatus, errorThrown){
alert("ERROR");
}
});
return false;
基本上我想在这个网址上提交一段字符串: http://www.livepicly.com/app/api.php?method=add_reservation
格式化的字符串(由firebug显示)如下所示:
当通过浏览器执行字符串(直接复制粘贴)时,它可以完美地工作。它显示了相应的消息。
但是,当我执行代码时,它总是返回错误。有谁知道为什么会这样?
干杯,
答案 0 :(得分:1)
有问题的API不是RESTful。
无论如何,你的问题是各种因素的综合。它确实是 NOT 是实际抛出错误的API,因为所有错误都返回为200状态代码。 (不是RESTful Point#1)。因此,即使livepicly返回错误,它仍然算作jQuery处理程序的成功。
没有特别的顺序:
Access-Control-Allow-Origin
标头。它也不支持JSONP。 (通过查询http://www.livepicly.com/app/api.php?method=add_reservation&callback=test可以看出这一点。由于跨域限制,这将完全阻止jQuery加载执行任何查询的任何数据这是唯一失败的事情!这也完全阻止了jQuery的使用。你需要做出选择来绕过这个,可能包括也可能不包括:
ProxyPass
使用ReverseProxyPass
和mod_proxy
指令,或使用带有[P,L,QSA]
标志集的重写规则。在nginx上,使用proxy_pass
指令。如果您无法访问,请使用curl
通过PHP代理它。Access-Control-Allow-Origin: *
添加到标题中,这样就可以让您的通话工作总的来说,只需将它们指向https://en.wikipedia.org/wiki/Representational_state_transfer并给我一个耳光。请?