如何通过$ .post方法发送查询参数?

时间:2019-08-01 06:30:59

标签: jquery api http-headers .post

我在将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);

1 个答案:

答案 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