2016-03-19 21 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 Bad Requestが発生します。私はFiddlerの要求を見ました。送信したパラメータが"firstName=Jon&lastName=Smith"として送信されていることに気付きました。しかし、それらはdataパラメータで定義されているようにJSONとして送信する必要があります。私はこれがフィドラーの作曲家の要求を変更することによって問題であることを確認しました。私は間違って何をしていますか?あなたは、次のようなデータをstringifyする必要が

おかげ

+0

この問題もありました。私は解決できませんでした、私はGETメソッドを使用しました。 – Farshid

答えて

0

(あなたがここでそうであるように)、あなたはそれがapplication/x-www-form-urlencodedとしてデータをエンコードしますdataパラメータを使用してプレーンなオブジェクトのjQueryを渡す場合。

contentTypeを設定するだけでは不十分です。

JSONを送信する場合は、自分でエンコードする必要があります。そのためにJSON.stringifyを使用することができます。

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

$.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'); } 
}); 
関連する問題