Javascript jQuery-AJAX请求
我正在开发一个向web服务发送POST请求的应用程序。我的POST请求如下所示:Javascript jQuery-AJAX请求,javascript,jquery,Javascript,Jquery,我正在开发一个向web服务发送POST请求的应用程序。我的POST请求如下所示: $.ajax({ type: 'POST', url: getEntityUrl(), cache: 'false', contentType:'application/json', headers: { 'api-key':'myKeyHere', 'Content-Type':'application/json' }, data: { firstName:'Jon'
$.ajax({
type: 'POST', url: getEntityUrl(), cache: 'false',
contentType:'application/json',
headers: {
'api-key':'myKeyHere',
'Content-Type':'application/json'
},
data: {
firstName:'Jon',
lastName:'Smith'
},
success: function() { alert('good job'); },
error: function() { alert('oops'); }
});
当我执行此操作时,我收到一个错误的400请求。我用小提琴看了这个请求。我注意到我发送的参数被发送为“firstName=Jon&lastName=Smith”
。但是,它们需要作为JSON发送,就像我在数据中定义的那样。我通过在Fiddler中修改composer中的请求来确认这就是问题所在。我做错了什么
谢谢您需要对以下数据进行字符串化
$.ajax({
type: 'POST',
url: getEntityUrl(),
contentType: 'application/json',
headers: {
'api-key': 'myKeyHere',
'Content-Type': 'application/json'
},
data: JSON.stringify({ firstName: 'Jon', lastName: 'Smith' }), //change here
success: function () { alert('good job'); },
error: function () { alert('oops'); }
});
如果您通过data
参数传递jQuery一个普通对象(就像您在这里做的那样),那么它将把数据编码为application/x-www-form-urlencoded
仅设置contentType
是不够的
如果要发送JSON,则必须自己对其进行编码。您可以使用JSON.stringify
来实现这一点
data: JSON.stringify({
firstName:'Jon',
lastName:'Smith'
}),
我也有这个问题。我无法解决,我使用了GET方法。