【发布时间】:2022-01-19 02:03:33
【问题描述】:
我正在向服务器发出获取 REST api 请求。服务器包含我希望通过参数启动的自动化作业。
var jobURL = "https://hostname/api/v1/tasks";
$.ajax({
url: jobURL,
method: 'GET',
async: false,
contentType: "application/json",
data: {
name: '*JOBNAME*'
},
headers: {
'Authorization': 'Bearer '+ obj.access_token,
'Content-type': 'application/x-www-form-urlencoded',
Accept:'application/json'
},
success: function(data){
taskname_obj = data // result
}
我正在按照服务器产品的文档执行此操作,并且它正在运行。
我有一个成功的请求,在“taskname_obj”变量中返回了项目。 话虽如此,我正在尝试将相同类型的代码用于另一个调用。
// THIS IS WORKING TO JOB WITHOUT PARAMS.
// Let's run the job.
$.ajax({
url: jobURL,
method: 'POST',
async: false,
headers: {
'Authorization': 'Bearer '+ obj.access_token
},
success: function(data){
taskname_obj2 = data // result
}
})
所以我在做上面的代码
我又成功了,我可以开始我的工作了。我有成功的迹象返回到taskname_obj2。
话虽如此,我正试图从参数开始。我想我必须把它放到“数据:”项中,然后我大喊使用 JSON。所以...我执行以下操作...
var payload = {
USER_ID: "",
BEGDATE: "060121",
ENDDATE: "121521"
};
$.ajax({
url: jobURL,
method: 'POST',
async: false,
contentType: 'application/json',
data: payload,
headers: {
'Authorization': 'Bearer '+ obj.access_token,
'Content-type': 'application/x-www-form-urlencoded',
Accept:'application/json'
},
success: function(data){
taskname_obj2 = data // result
}
})
这不起作用。我从服务器收到不支持的媒体类型的 415 错误。我也尝试不将 JSON.stringify 用于数据项,但我也得到了 415。
我想我没有正确地告诉它如何阅读我的 JSON。谁能帮我理解我做错了什么?
我也尝试添加此contentType: 'application/json', 无济于事。
更新: 使用 BAMARs 技术返回 422 错误。
$.ajax({
url: jobURL,
method: 'POST',
async: false,
contentType: 'application/json',
dataType: 'json',
data: JSON.stringify(payload),
headers: {
'Authorization': 'Bearer '+ obj.access_token
},
success: function(data){
taskname_obj2 = data // result
}
})
【问题讨论】:
-
GET 请求不需要
content-type,因为它不发送任何内容。 -
在 POST 请求中,为什么应该使用 URL 编码的
JSON.stringify(payload)? -
老实说我不知道,我不是一直都在做 jquery。我正在尝试将 powershell 转换为 jquery 以进行 chrome 扩展。感谢有关获取请求的提示,我删除了它并且确实有效。有问题的孩子是 POST,我从中删除了 stringify。也谢谢你
-
@Barmar GET 请求包含
data。不是作为正文发送的吗? -
@jabaa 不,它没有。
data:值作为 URL 中的查询参数发送。
标签: javascript jquery json rest