如何在AJAX中为POST请求制定数据对象

时间:2018-08-03 12:17:28

标签: jquery json ajax api stringify

我有以下curl POST请求,以连接到node.js API。

curl --request POST \
 --url http://localhost:3001/api/v1/login\
 --header 'Content-Type: application/json' \
 --data '{
    "username": "asdfsdfs",
    "email": "bla",
    "password": "dkasdjf333"
}'

但是,我为用AJAX传递POST请求而制定匹配对象很费力,我从API服务器收到500错误,浏览器控制台说:“ TypeError:无法读取未定义的属性'replace'' '。 我使用了两种类型的数据对象,如下所示。

//Version 1 which failed
 var loginData = {
 username: 'asdfsdfs',
 email: 'bla',
 password: 'dkasdjf333'
};
//version 2 which failed as well
var stringifiedJson = JSON.stringify({
 username: 'asdfsdfs',
 email: 'bla',
 password: 'dkasdjf333'
});


$.ajax({
 type: 'POST',
 url: 'http://localhost:3001/api/v1/login',
 data: loginData,
 processData: false,
 contentType: false,
 dataType: 'json'
 }).done(function(data) {
 console.log(data);
});

1 个答案:

答案 0 :(得分:1)

您必须将请求请求的contentType更新为JSON:

$.ajax({
    ...,
    contentType: 'application/json; charset=utf-8'
});