2016-05-26 314 views
0

我有一個ajax發佈請求,需要以array [integer]格式發送一些數據,而不需要參數或密鑰。不幸的是,每次嘗試時瀏覽器都會掛起請求。我已經在郵遞員和招搖的成功,但我不能找出發送這個無鑰匙陣列所需的數據格式。阿賈克斯數據方法

這裏是我的要求:

$.ajax({ 
     type: "POST", 
     url: "/endpoint?code=" + data, 
     data: [1], 
     success: function(response) { 
      console.log(response); 
     }.bind(this), 
     error: function(xhr, status, err) { 
      console.log(status + " " + err); 
     }.bind(this) 
    }); 

在我揚鞭文檔以下工作

curl -X POST --header "Content-Type: application/json" --header "Accept: application/json" -d "[1]" "http://url/endpoint?code=testing" 

在郵遞員,它看起來像表單數據崗位數組沒有價值的關鍵。 我已經能夠在瀏覽器中實現這一點,但仍然沒有運氣。

任何幫助將不勝感激,這似乎是一個簡單的回答問題,但我似乎無法找到任何解決方案。

+0

是否將引號放在數組中,即傳遞字符串而不是數組字面量? – metame

+1

您也可以使用'JSON.stringify([1])'這對於可擴展性來說會是一個更好的解決方案。 – metame

+0

我的想法。我已經嘗試過這些,但沒有運氣。 – user3225501

回答

0

嘗試對您的數據進行綁定。發送「[1]」

+0

不幸的是,這也不起作用。在這兩種情況下,如果不對數據進行字符串化並將其字符串化,Chrome會爲我提供臨時標題和表單數據,如[1]:或「[1]」:這兩個請求都會掛起 – user3225501

0

請致電JSON.stringify,並提供contentType選項來指定該標題。

$.ajax({ 
    type: "POST", 
    url: "/endpoint?code=" + data, 
    data: JSON.stringify([1]), 
    contentType: 'application/json', 
    dataType: 'json', 
    success: function(response) { 
     console.log(response); 
    }.bind(this), 
    error: function(xhr, status, err) { 
     console.log(status + " " + err); 
    }.bind(this) 
}); 

BTW,而不是在每一個回調函數使用.bind(this),您可以使用選項context: this自動通過。

+0

嘿,謝謝。這對我來說並不是正確的答案,但它導致我發現問題的真正根源。我將自己的服務器上的流傳輸到另一個服務器,並將響應傳回給管理員。沿線的某處失敗。我會再調查一下。 – user3225501