我正在向我们的服务器发送跨域jquery ajax请求:
$.ajax({
beforeSend: function (xhr) {
xhr.withCredentials = true;
},
data: data,
type: "GET",
url: requestUrl,
xhrFields: {
withCredentials: true
},
async: true,
dataType: 'json',
crossDomain: true
};
发送的数据对象具有以下格式:
var data = {
Customer: { id: 1 },
Order: { id: 1 }
};
使用JSON.stringify(数据)转换数据并将其发送到服务器。
在服务器上我有这个请求对象:
public class RequestObject
{
public CustomerRef Customer { get; set; }
public OrderRef Order { get; set; }
}
这两个对象仍然具有id属性。
当我在服务器端调试时,会创建请求对象,但Customer和Order属性都为空。
我正在使用数据对象中的参数请求数据(GET)。
这就是我发送的网址的样子:
http://localhost:82/json/reply/MyService?{%22Customer%22:{%22id%22:1},%22Order%22:{%22id%22:1}}
我错了什么?
答案 0 :(得分:1)
我遇到了类似的问题,解决方法是将.ajax调用中的contentType属性设置为“application / json”。在我这样做之后,所有序列化都很有效。
这是我的测试代码:
var dataObject = {RequestString: "hello service!", RequestDetails: {ClientName: "val1", ClientGroupID: "val2"}, Arguments: {dict1: {test1: "test1", test2: "test2"}}};
var dataString = JSON.stringify(dataObject);
var request = $.ajax({
url: "http://localhost:1337/testws",
type: "POST",
dataType: "json",
contentType: "application/json",
data: dataString,
cache: false,
success: function (d) {
$("#result-div").text(JSON.stringify(d));
},
error: function (jqXHR, textStatus) {
alert("web call failed! d" + textStatus);
}
});