2015-11-26 57 views
-2

所以這看起來像一個簡單的任務,但花了一個多小時。我只想將一個變量傳遞給ajax頭參數。出於某種原因,這導致了許多問題。即時通訊從我們的服務器返回500錯誤,但如果我手動輸入變量神奇地工作。不太確定,如果一個基本的規則我不理解,但某事是不正確的。任何人有任何想法?將變量添加到ajax頭部參數

下面是我的代碼,我需要通過的變量是headertype

saveIncident: function() { 
    if (!confirm('Save?')) return 

    var requestType = '' != '' ? 'PUT' : 'POST'; 
    var POST_Headers = '{"Accept": "application/json;odata=verbose"}'; 
    var PUT_Headers = '{"Accept" : "application/json;odata=verbose","X-HTTP-Method':'MERGE","If-Match": item.__metadata.etag}'; 
    var headertype = (requestType != 'POST') ? POST_Headers : PUT_Headers; 

    $.ajax({ 
     url: this.createIncidentUrl(requestType), 
     type: requestType, 
     processData: false, 
     contentType: "application/json;odata=verbose", 
     headers: headertype, 
     data: JSON.stringify(IncidentManager.collectFieldValues()), 
     success: function (data) { 
     if (requestType == 'POST') 
      console.log(data.d); 
      } 
     }); 
}, 
+0

'變種的RequestType = '' '=!'? 'PUT':'POST';'? –

回答

2

你傳遞給$.ajaxheaders值應該是一個對象,而不是字符串。

所以你需要在這裏刪除單引號:

var POST_Headers = {"Accept": "application/json;odata=verbose"}; 
var PUT_Headers = {"Accept" : "application/json;odata=verbose","X-HTTP-Method":"MERGE","If-Match": item.__metadata.etag}; 
+0

我得到語法錯誤:'未捕獲的SyntaxError:意外的標記,'var var PUT_Headers = {「Accept」:「application/json; odata = verbose」,「X-HTTP-Method」:'MERGE「,」If-Match 「:item .__ metadata.etag};' –

+0

Nevermind got it var PUT_Headers = {」Accept「:」application/json; odata = verbose「,」X-HTTP-Method「:」MERGE「,」If-Match「: 「項目.__ metadata.etag」}; –

+0

非常感謝Wouter :) –