【问题标题】:How to formulate data object for POST request in AJAX如何在 AJAX 中为 POST 请求制定数据对象
【发布时间】:2019-01-11 08:05:23
【问题描述】:

我有以下 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: Cannot read property 'replace' of undefined' '。 我使用了 2 种类型的数据对象,如下所示。

//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);
});

【问题讨论】:

  • 你怎么知道你的控制台错误与你刚刚粘贴的那段代码有关?
  • 为什么要设置 processData 和 contentType 为 false,你的 contentType 应该是 application/json 吗?
  • 意思是传递你的loginData,而你可能应该传递你的stringifiedJson
  • 我尝试了两种不同的方法。一个是原样的 Json 对象,一个是与 JSON.stringify 一起使用的 JSON 对象。控制台错误与此有关,因为它正在逐步进行单元测试,并且它是唯一的错误来源。

标签: jquery json ajax api stringify


【解决方案1】:

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

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

【讨论】:

  • 谢谢。这让我找到了正确的解决方案。但是,我不必添加字符集。它与 JSON.stringify 对象一起工作。
猜你喜欢
  • 2021-05-24
  • 2017-09-10
  • 2015-04-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-14
  • 2011-05-22
  • 2016-11-27
  • 2020-03-15
相关资源
最近更新 更多