我在将JSON字符串发送到$ .post调用时遇到问题。由于$ .post的默认ContentType为application/x-www-form-urlencoded
,但我的服务器仅接受application / json标头
在$ .post电话中需要帮助的原因是我想要快速的结果
这是我的示例代码供参考:
var jqxhr = $.post(url, sendData, function(data) {
console.log(data);
})
.done(function() {
})
.fail(function(data) {
console.log("Failed");
console.log(data);
})
.always(function() {
});
// Perform other work here ...
// Set another completion function for the request above
jqxhr.always(function() {
});
var obj = {
"timeout": "5s",
"_source": false,
"query": {
"nested": {
"path": "demo",
"query": {
"multi_match": {
"query": request,
"type": "phrase",
"operator": "and",
"fields": ["name"]
}
},
"inner_hits": {
"highlight": {
"fields": {
"name": {},
}
}
}
}
}
};
var sendData = JSON.stringify(obj);
答案 0 :(得分:2)
$。post是Ajax的简写功能
您可以直接使用$.ajax()
$.ajax({
url: url,
type: 'post',
dataType: 'json',
contentType: 'application/json',
data: sendData // JSON string
});
OR 使用$.ajaxSetup()
设置将来的Ajax请求的默认值。它的用途不是 推荐。
$.ajaxSetup({
contentType: 'application/json',
});
$.post(url, sendData, function(data) {
});
注意::jqXHR.success()
,jqXHR.error()
和jqXHR.complete()
的回调在jQuery 1.8中是deprecated