我基于MSDN教程
创建了一个简单的支持AJAX的WCF服务[ServiceContract(Namespace = "AjaxWcf")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class AjaxWcf
{
[OperationContract]
public string AssessString(string input)
{
if (input.Contains("1"))
return "true";
return "false";
}
当我生成js代理并使用ASP.NET AJAX库调用时,它完全有效。
然而,当我切换到jQuery进行ajax()调用时,它会得到[object XMLHttpRequest]错误
$.ajax({ url: "AjaxWcf.svc/AjaxWcf/AssessString",
type: "POST",
dataType: "text",
processData: false,
data: { input: inputValue },
error:
function (msg) { $("#serviceResponse").html(msg.toString()); },
success: function (response)
{ $("#serviceResponse").html(response); }
});
我已经阅读了有关该错误的内容以及修改错误委托以进一步查看问题的建议
function (xmlHttpRequest, textStatus, errorThrown) {
if (xmlHttpRequest.readyState == 0 || xmlHttpRequest.status == 0)
return; // it's not really an error
else
$("#serviceResponse").html(errorThrown);
},
然后导致IE窒息
Microsoft JScript运行时错误:由于错误c00c023f无法完成操作。
显然这只是一个IE9问题,但在Google Chrome中进行测试仍然没有产生任何网络服务调用(断点永远不会受到影响)。如果我使用回旧的错误委托,相同的[对象XMLHttpRequest]问题。我有点惊讶于缺乏讨论使用jQuery到WCF服务的简单POST调用的材料,并且想知道缺少什么?
注意:这是使用jQuery 1.4.1,但据我所见,使用1.7.1仍然没有调用WCF服务。
答案 0 :(得分:2)
由于此时尚未完全理解的原因,似乎应该使用JSON数据类型执行jQuery AJAX to WCF服务。
$.ajax({ url: "AjaxWcf.svc/AssessString",
type: "POST",
dataType: "json",
contentType: "application/json",
processData: false,
data: postData,
error: function (msg)
{ alert(msg.responseText); },
success: function (response)
{ $("#serviceResponse").html(response.d); }
});
通过这种方式,浏览器可以在不遇到错误并到达服务端点的情况下发出请求。