我继承了一些最终将成为API调用一部分的代码。根据现有代码,调用是一个用access_token检索JSON代码的帖子。虽然这通常很简单,并且像其他每个API一样,但此代码要求客户端密钥有一个自定义的httpheader字段。
我能够使用URLRequest等在Objective C中完成这项工作,但是现在我正在创建一个Web组件的调用,我已经被封锁了。
我正在使用一个非常标准的jquery帖子
$.post('https://url.com',
{access_token:'XXXXXXXXXXXXXXXXXXX',
function(data){
console.info(data);
}, 'json');
标头中有HTTP-EQUIV。但该帖子从不检索数据,服务器本身也没有识别出任何调用(即使是不完整的调用)。
我可能不得不废弃此代码并重新开始,但如果有人之前遇到此问题,请提供任何见解。
答案 0 :(得分:116)
您发布的内容存在语法错误,但由于您无法通过$.post()
传递HTTP标头,因此没有任何区别。
如果您使用的是jQuery版本> = 1.5,请切换到$.ajax()
并传递headers
(docs)选项。 (如果您使用的是较旧版本的jQuery,我将通过beforeSend
选项向您展示如何执行此操作。)
$.ajax({
url: 'https://url.com',
type: 'post',
data: {
access_token: 'XXXXXXXXXXXXXXXXXXX'
},
headers: {
Header_Name_One: 'Header Value One', //If your header name has spaces or any other char not appropriate
"Header Name Two": 'Header Value Two' //for object property name, use quoted notation shown in second
},
dataType: 'json',
success: function (data) {
console.info(data);
}
});
答案 1 :(得分:13)
如果想要使用.post(),那么这将为将来使用jquery做出的请求设置标题
$.ajaxSetup({
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
});
然后正常进行.post()调用。
答案 2 :(得分:2)
我按照你提到的那样尝试过,但只有第一个参数正在通过,而所有参数都在服务器中显示为undefined
。我正在传递JSONWebToken
作为标题的一部分。
.ajax({
url: 'api/outletadd',
type: 'post',
data: { outletname:outletname , addressA:addressA , addressB:addressB, city:city , postcode:postcode , state:state , country:country , menuid:menuid },
headers: {
authorization: storedJWT
},
dataType: 'json',
success: function (data){
alert("Outlet Created");
},
error: function (data){
alert("Outlet Creation Failed, please try again.");
}
});
答案 3 :(得分:0)
只想为将来的开发人员更新此线程。
JQuery> 1.12现在支持能够通过JQuery.post($ .post({...})更改请求的每一小部分。请参见https://api.jquery.com/jquery.post/
中的第二个函数签名