【发布时间】:2012-01-13 02:37:43
【问题描述】:
我根据 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 中对此进行测试仍然没有产生任何 Web 服务调用(断点永远不会被命中)。如果我使用回到旧的错误委托,同样的 [object XMLHttpRequest] 问题。我有点惊讶于缺少讨论使用 jQuery 到 WCF 服务的简单 POST 调用的材料,不知道缺少什么?
注意:这是使用 jQuery 1.4.1,但据我所知,使用 1.7.1 仍然没有调用 WCF 服务。
【问题讨论】: