1

我正在向我们的服务器发送跨域 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(data) 转换数据并发送到服务器。

在服务器上我有这个请求对象:

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}}

我错了什么?

4

1 回答 1

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);
}
});
于 2013-07-25T11:33:21.180 回答