2016-03-19 257 views
0

我正在開發一個向web服務發送POST請求的應用程序。我的POST請求如下所示:jQuery - AJAX請求

$.ajax({ 
    type: 'POST', url: getEntityUrl(), cache: 'false', 
    contentType:'application/json', 
    headers: { 
    'api-key':'myKeyHere', 
    'Content-Type':'application/json' 
    }, 
    data: { 
    firstName:'Jon', 
    lastName:'Smith' 
    }, 
    success: function() { alert('good job'); }, 
    error: function() { alert('oops'); } 
});     

當我執行此操作時,出現400錯誤請求。我在菲德勒看過這個請求。我注意到我發送的參數是作爲"firstName=Jon&lastName=Smith"發送的。但是,它們需要以JSON的形式發送,就像我在data參數中定義的那樣。我通過修改Fiddler作曲家的請求證實了這個問題。我究竟做錯了什麼?

感謝

+0

我也有這個問題。我解決不了,我用GET方法。 – Farshid

回答

0

如果傳遞的jQuery一個普通對象通過data參數(如你在這裏做的),那麼它將編碼數據application/x-www-form-urlencoded

只是設置contentType是不夠的。

如果你想發送JSON,那麼你必須自己編碼。你可以使用JSON.stringify

data: JSON.stringify({ 
    firstName:'Jon', 
    lastName:'Smith' 
}), 
0

您需要stringify像下面的數據。

$.ajax({ 
    type: 'POST', 
    url: getEntityUrl(), 
    contentType: 'application/json', 
    headers: { 
     'api-key': 'myKeyHere', 
     'Content-Type': 'application/json' 
    }, 
    data: JSON.stringify({ firstName: 'Jon', lastName: 'Smith' }), //change here 
    success: function() { alert('good job'); }, 
    error: function() { alert('oops'); } 
});