【发布时间】:2020-04-28 07:21:08
【问题描述】:
我正在向我的 WCF 服务发出 jQuery AJAX POST 请求。在此调用中,我将复杂数据解析为 WCF 方法,但收到 400 Bad Request 错误。
当我测试来自 Postman 的相同调用时,我能够从服务中获得预期的输出。
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
}
});
【问题讨论】:
-
您的 JS 代码看起来不错,但我建议删除
content-type标头并让 jQuery 为您执行此操作。由于您在请求中发送的数据与接收方制定的格式或业务规则不匹配,因此会引发 400 错误。因此,您需要从服务器端进行调试。这是跨域请求吗? -
如果真的要发送JSON,需要使用
data: JSON.stringify(data), -
如果您为
data:选项使用对象,jQuery 将以 URL 编码格式序列化它,而不是 JSON。