2014-09-12 57 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