jquery AJAX和json格式

我有一个期望接收json的web服务,如下所示:

{"first_name":"test","last_name":"teste","email":"moi@someplace.com","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(这是validation的第一步)。

我的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); } }); 

目前,您将数据作为典型的POST值发送,如下所示:

 first_name=somename&last_name=somesurname 

如果要将数据作为json发送,则需要创建一个包含数据的对象并对其进行字符串化。

 data: JSON.stringify(someobject)