我正在向WCF服务发出jQuery AJAX POST请求。在此调用中,我将复杂数据解析为WCF方法,但出现400错误请求错误。
当我测试来自邮递员的相同呼叫时,我能够从服务中获得预期的输出。
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
}
});
当我们使用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请随时让我知道问题是否仍然存在。