2013-10-23 24 views
7

私は、次のjQueryのAJAX要求を持っている:AJAX要求について "400不正な要求" 応答

// collect form data and create user obj 
var user = new User(); 
user.firstname = $("#usrFirstName").val(); 
user.lastname = $("#usrSurname").val(); 
user.role = $("#usrRole").val(); 

// actual ajax request 
$.ajax({ 
    type: 'POST', 
    url : 'http://awesome-url', 
    crossDomain: true, 
    data: user, 
    contentType:"application/json; charset=utf-8", 
    dataType: 'json' 
}).done(function(data, status) { 
    alert(JSON.stringify(data)); 
}).fail(function(data, status) { 
    alert(status); 
    alert(JSON.stringify(data)); 
}); 

サーバーからの応答は次のとおりです。

"ステータス":400、 "STATUSTEXT": "Bad Request"
"クライアントから送信された要求は構文的に誤りです。"

サーバーでSpring-MVCが実行されています。しかし、それが正しく働いていると私が言うことができる限り。私がPostmanと手動でリクエストを送信する場合、次の設定が有効なので、

ヘッダー:

Content-Type application/json; charset=utf-8 

内容:

{"firstname":"alex","lastname":"lala","role":"admin"} 

私はそれが(時間発展のために、それは同じドメインでホストされるクロスドメインの要求であることを言及する必要があり後でサーバー)。私はブラウザのセキュリティ設定を無効にし、サーバーへのAJAX要求は正常に機能しています(データを送信する必要がない限り)。あなたはJSONをシリアライズする必要が

+0

あなたは、ブラウザベースのRESTツールで同じ正確な要求を形成し、それを送信するとどうなりますか?送信する前にUserオブジェクトを文字列化しようとしましたか? –

+0

_server_に受信したデータが気に入らない場合は、_server_ whyの意味、実際に何が入ってきたのかを記録したり、ログファイルをチェックしたりする必要があります。 – CBroe

+0

stringifyを試してみました。私はあなたがjQuery.ajaxでオブジェクトを投げるなら、これが起こると思ったので、私は非常に混乱しています。それを回答として投稿し、私はそれを受け入れます。 – rob

答えて

6

、試してみてください。

$.ajax({ 
    type: 'POST', 
    url : 'http://awesome-url', 
    crossDomain: true, 
    data: JSON.stringify(user), 
    contentType:'application/json; charset=utf-8', 
    dataType: 'json' 
}) 
関連する問題