经过Wcf Service
(JS),经过长时间的尝试后,我致电Jquery
。
服务电话如下:
function CallService() {
var request = { userName: "aaa", password: "123" };
var jsondata = JSON.stringify(request);
$.ajax({
type: "POST", //GET or POST or PUT or DELETE verb
url: "http://localhost:xxxx/Service1.svc/GetUser", // Location of the service
data: jsondata, //Data sent to server
contentType: "application/json; charset=utf-8", // content type sent to server
dataType: "json", //Expected data format from server
processdata: true, //True or False
crossDomain: true, //True or False
success: function (result) {
alert('success');
},
complete: function () {
alert('completed');
},
error: function (xhr, status, message) {
alert('error with status - ' + xhr.status);
}
});
}
我将BreakPoint放在服务中的GetUser函数中,当我调用函数CallService时,我转到BreakPoint of Service(这意味着它可以工作!)。
服务功能运行良好并返回正确的数据,但是对于Jquery,我得到了状态0 的错误功能。
此外,在控制台中我看到一个红色错误:(通常不被理解为错误)
POST http://localhost:xxx/Service1.svc/GetUser
可能是什么问题?
答案 0 :(得分:1)
可能是您正在制作跨域请求。请注意,具有不同端口的相同主机名称被视为不同的域。例如:http://localhost:20
和http://localhost:40
被视为不同的域。
在您的情况下,可能是您的浏览器支持CORS ,因此仍会发送对其他域的请求。这就是为什么当您在服务器端调试时看到它有效,但是当浏览器从服务器收到响应时,响应将被丢弃,并且由于响应中缺少Access-Control-Allow-Origin
标头或者{{1}而引发错误标题,但其值不同于您的域。
答案 1 :(得分:0)
我的问题是在User
对象中我有DateTime
。
当我将其转为String
时,工作。