2014-09-12 56 views
0

我正在尝试发送ajax调用。我使用了Chrome的REST测试扩展名为Postman[Link to it]。当我用它的扩展工作发送呼叫,但当我通过jQuery发送它不起作用,我得到一个错误消息:“错误0”。使用REST发送ajax请求但不使用jQuery

这是邮递员工具向服务器发送请求:

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只是一个例子!

编辑2:我要疯了。

EDIT3:我更新了我的代码中加入JSON.stringify()

Edit4:当我把服务器上的文件并运行脚本它的伟大工程,一切都很好!但是当我在本地机器上运行这些文件时,这些调用不起作用,我得到了这个错误。我真的很疯狂!我无法弄清楚什么是错的:(

编辑5:也许这与这个叫做CORS的东西有关吗?但它是如何来的,它是从Chrome插件运行的,但它不能从我的脚本本地?!

+0

什么是触发Ajax调用?它是跨域吗?是否启用CORS? – epascarello 2014-09-12 14:27:15

+0

您不能在客户端使用JavaScript或jQuery调用外部URL。 – Alvaro 2014-09-12 14:27:20

+1

*“您不能在客户端使用JavaScript或jQuery调用外部URL。”*这是不正确的。你可以在服务器允许的情况下进行。 – epascarello 2014-09-12 14:31:00

回答

-1

主机go.com不允许XSS/CORS从您的域名。

XMLHttpRequest cannot load http://go.com/form/front. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://stackoverflow.com' is therefore not allowed access. 
+2

go.com就是一个例子! – 2014-09-12 14:44:10

2

如果您data属性是一个JavaScript对象,jQuery的将其转换成用于传输的数据。这是邮差可能发送它作为一个实际的字符串。尝试在单引号包裹你的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标头。否则,您可以尝试使用JSONP,它不使用XMLHTTPRequest对象,并且不受同样的安全限制。

+0

我已经用JSON.stringify()包装了我的对象,但这不是问题。因为当我在服务器上运行代码时,一切正常。但是,当我在本地运行它时,它会失败,我得到该错误。 – 2014-10-17 21:23:00

+0

@AlexTwain请参阅编辑我的答案 – 2014-10-20 14:01:36