我正在尝试发送ajax调用。我使用了名为Postman
[Link to it]的Chrome的REST测试扩展程序。当我使用扩展程序发送调用时,它可以工作,但是当我通过jQuery发送它时,它不起作用,我得到一条错误消息:“错误0”。
这是Postman工具发送给服务器的请求:
POST /form/front HTTP/1.1
Host: go.com
Cache-Control: no-cache
{ "sitename": "AAGx", "zone": 12, "sector": 34, "square": 7}
这是我向服务器发送请求的代码:
function insert_newform() {
form_data = {sitename: 'AAGx', zone: 12, sector: 34, square: 7}
$.ajax({
type: "POST",
url: 'http://go.com/form/front',
data: JSON.stringify(form_data),
success: function(result) { alert("good!") },
error: function(jqXHR, textStatus, errorThrown) { alert(textStatus) }
});
}
$("#show").click(function() {
insert_newform()
}
);
我无法找出我的电话有什么问题!
编辑:go.com就是一个例子!EDIT2:我疯了。
Edit3:我更新了我的代码以添加JSON.stringify()
编辑4:当我将文件放在服务器上并运行脚本时,它运行良好,一切都很好!但是当我在我的机器上本地运行文件时,调用不起作用,我得到了这个错误。我真的疯了!我无法弄清楚出了什么问题:(
编辑5:也许这与这个名为CORS的东西有关?但它是如何通过Chrome插件运行的,但它不适用于我的本地脚本?!!
答案 0 :(得分:2)
如果您的data
属性是JavaScript对象,jQuery会将其转换为表单数据以进行传输。 Postman可能会将其作为实际字符串发送。尝试将data
用单引号括起来:
data: '{"sitename": "AAGx", "zone": 12, "sector": 34, "square": 7}', ...
编辑:为了回应您的修改,我几乎可以保证您是CORS或跨源资源共享问题。 AJAX和JavaScript通常受到各种安全限制。限制JavaScript能力的最核心的安全概念之一是Same Origin Policy。这个想法是为了防止XSS(cross-site scripting)攻击。
jQuery的AJAX函数will give an error code of 0 if it experiences CORS issues。
有关于how local files are under more strict security constraints here的详细解答,可以完美地解释您的情况。
如果您拥有对服务器的控制权,那么您的解决方案是从服务器发送Access-Control-Allow-Origin
标头。否则,您可以尝试使用不使用XMLHTTPRequest
对象且不受相同安全约束的JSONP。
答案 1 :(得分:-1)