【发布时间】:2012-05-26 17:36:02
【问题描述】:
我有一个 WCF JSONP 服务,我正在尝试使用 jQuery (v 1.7.2)。
服务器端代码:
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
[JSONPBehavior(callback = "method")]
List<string> GetList()
{
return new List<string> {"test1", "test2"};
}
客户端代码:
function showList()
{
$.ajax({
url: 'http://mysite/myservice.svc/GetList',
dataType: 'jsonp',
data: { },
contentType: "application/json",
success: function (m)
{
debugger;
},
error: function (err)
{
debugger;
}
});
}
发生的情况是:调用了“错误”回调,当我检查 err 参数时,它的 err.responseText 包含正确的 JSON 响应:{"GetListResult":["test1","test2"]}
为了查看发生了什么,我开始调试 jQuery 本身,我看到的是它无法转换结果 ajaxConvert 方法:
jQuery 1.7.2(未最小化),第 7511 行:success = ajaxConvert( s, response ); 那些异常 Could not complete the operation due to error 80020101.。
当我单步执行 ajaxConvert 时,我看到它尝试执行 jQuery.globalEval(response),这会引发上述异常。
任何想法我做错了什么?
【问题讨论】:
-
你确定你的
dataType应该是“jsonp”吗?如果将其设置为 "json" 怎么办?我不认为你在做 jsonp。见en.wikipedia.org/wiki/JSONP -
我需要进行跨域调用 - wcf 服务与客户端页面位于不同的域中;因此我需要一个 JSONP 调用。