gpt4 book ai didi

javascript - 为什么在使用 jquery ajax 执行 GET 请求时无法将 json 数组作为数据传递?

转载 作者:行者123 更新时间:2023-12-01 05:43:38 27 4
gpt4 key购买 nike

如果我运行这样的获取请求:

 $.ajax({
url: 'http://localhost:8000/api/points/',
contentType:"application/json",
dataType: "json",
data: JSON.stringify({"content_type":content_type,"object_id":object_id}),
type: 'GET',
}).error(function(r){ $(output).text('error') })
.success(function(r){
$(output).text(r.count);
})

其请求发送至:

http://localhost:8000/api/points/?{%22content_type%22:8,%22object_id%22:40}

显然这很糟糕。如果我不执行 JSON.stringify() ,它就可以正常工作,但这是为什么呢?

奇怪的是,如果我执行 POST 请求,结果恰恰相反!我必须对数据进行字符串化,否则它将无法工作。那么为什么会有差异呢?

最佳答案

首先让我们解决您的请求:

var req = $.ajax({
method: "GET",
url: "http://localhost:8000/api/points/",
dataType: "json", // is you telling jQuery what kind of response to expect.
data : {id : '12345'}
});

req.done(function(data){
// do something with the data
});

req.fail(function(jqXHR, status, err){
// do something in case of failure
throw err;
});

接下来了解您正在处理什么:

<强> data :普通对象或字符串或数组要发送到服务器的数据。如果还不是字符串,它将转换为查询字符串。它附加到 GET 请求的 url 中。 默认情况下,作为对象(从技术上讲,除了字符串之外的任何内容)传递到数据选项的数据将被处理并转换为查询字符串,适合默认内容类型“application/x-www-form-urlencoded”。

注意:jqXHR.success()、jqXHR.error() 和 jqXHR.complete() 回调将在 jQuery 1.8 中弃用。要为最终删除准备代码,请改用 jqXHR.done()、jqXHR.fail() 和 jqXHR.always()。

最后:

不需要:JSON.stringify({"content_type":content_type,"object_id":object_id})因为使用 JSON.stringify 来执行此操作是错误的方法只是 : { 'content_type' : 'type', 'object_id' : 'id' }

关于javascript - 为什么在使用 jquery ajax 执行 GET 请求时无法将 json 数组作为数据传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29091271/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com