获得400(错误请求)

时间:2020-04-28 07:21:08

标签: jquery ajax wcf post

我正在向WCF服务发出jQuery AJAX POST请求。在此调用中,我将复杂数据解析为WCF方法,但遇到400 Bad Request错误。

当我测试来自邮递员的相同呼叫时,我能够从服务中获得预期的输出。

var data = {
  // my data
};
var url = "my service url"

$.ajax({
  type: 'POST',
  url: url,
  data: data,
  dataType: 'json',
  contentType: "application/json; charset=UTF-8",
  crossDomain: "*",
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
  },
  success: function(resp) {
    alert('Success' + resp);
  },
  error: function(jqXHR, textStatus, errorThrown) {
    alert("Status: " + jqXHR.status + "; Error: " + jqXHR.responseText); // Display error message  
  }
});

1 个答案:

答案 0 :(得分:0)

当我们使用JSON字符串传输参数时,应在引号之前添加转义字符串。

       var compsiteType={
            "StringValue":"Hello",
            "BoolValue":true
        };
    $(function(){
        $.ajax({
            method:"POST",
            url: "http://10.157.13.69:8864/Service1.svc/GetDataUsingDataContract",
            dataType:"json",
            data:'{\"StringValue\":\"Hello\",\"BoolValue\":true}',
            contentType: "application/json",
            complete: function(data){
                $("#main").html(data.responseText);
            }
        })
})

因此,在进行调用之前,必须将JSON对象转换为JSON字符串。

var compsiteType={
    "StringValue":"Hello",
    "BoolValue":true
};
    dataType:"json",
    data:JSON.stringify(compsiteType),

此外,“ 400错误的请求”错误通常表示请求参数的格式有误。
根据以下属性,服务方法将接受不同类型的参数格式。

[WebInvoke(BodyStyle =WebMessageBodyStyle.Bare,RequestFormat =WebMessageFormat.Json)]
        string  GetDataUsingDataContract(CompositeType composite);

请参考我曾经回复的链接。
Get the object is null using JSON in WCF Service
随时让我知道问题是否仍然存在。