jsonを受け取ることを期待するウェブサービスがある:
{"first_name":"test","last_name":"teste","email":"[email protected]","mobile":"+44 22 2222 2222", "password":"testing"}
jqueryでのajax呼び出し:
$.ajax({
type: "POST",
url: hb_base_url + "consumer",
contentType: "application/json",
dataType: "json",
data: {
first_name: $("#namec").val(),
last_name: $("#surnamec").val(),
email: $("#emailc").val(),
mobile: $("#numberc").val(),
password: $("#passwordc").val()
},
success: function(response) {
console.log(response);
},
error: function(response) {
console.log(response);
}
});
データが送信されるフォーマットをチェックする方法はありますか?サーバに正しいJSONを送信していないと思われます(これは検証の最初のステップです)。
私のjqueryコードは有効なJSONを送信しているのでしょうか、それとも何か見落としているのでしょうか?
実際にはJSONを送信していない。オブジェクトを data
として渡しているが、オブジェクトを文字列化して、代わりに文字列を渡す必要がある。
dataType: "json"`は、jQueryに返されたJSONをパースするように指示するだけで、jQueryがリクエストデータを自動的に文字列化することを意味するものではありません。
に変更してください:
$.ajax({
type: "POST",
url: hb_base_url + "consumer",
contentType: "application/json",
dataType: "json",
data: JSON.stringify({
first_name: $("#namec").val(),
last_name: $("#surnamec").val(),
email: $("#emailc").val(),
mobile: $("#numberc").val(),
password: $("#passwordc").val()
}),
success: function(response) {
console.log(response);
},
error: function(response) {
console.log(response);
}
});
そのやり方では運がなかった。 私はいつもこうしている(これが助けになることを願っている):
var obj = {};
obj.first_name = $("#namec").val();
obj.last_name = $("#surnamec").val();
obj.email = $("#emailc").val();
obj.mobile = $("#numberc").val();
obj.password = $("#passwordc").val();
それからajaxで
$.ajax({
type: "POST",
url: hb_base_url + "consumer",
contentType: "application/json",
dataType: "json",
data: JSON.stringify(obj),
success: function(response) {
console.log(response);
},
error: function(response) {
console.log(response);
}
});