0

我已经创建了一个跨域兼容的 WCF 服务(这花了我 4 天的时间研究!)我已经完成了一切工作,但现在我遇到了 jQuery 请求的问题。它给了我一个我不知道的错误。

有人可以给我一个关于在这里做什么的想法。

我的 jQuery:

<script type="text/javascript">
$.ajax({
    url: 'http://localhost:8000/EchoWithGet',
    data: 's=boo!',
    type: 'GET',
    dataType: 'jsonp',
    success: function(res) {
        alert('yay');
    },
    error: function(a,b,c) {
    alert(a + ", " + b + ", " + c);
    }
});
</script>

错误响应:

[object Object],解析器错误,错误:未调用 jQuery17206724130902069609_1340034989481

如果我转到浏览器并输入我得到的 URL:

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">OK</string>

有人可以在这里阐明一下。

谢谢

4

1 回答 1

1

您应该从该页面返回一个 javascript 调用。这就是 jsonp 的工作原理。

所以响应应该是这样的:

jQuery17206724130902069609_1340034989481('some param');

默认情况下,jquery 会将调用的参数添加callback到指定服务器应响应的上述回调名称的 url。

我建议阅读ajax 文档,尤其是处理 jsonp 的部分。并查看jsonp 的工作原理

勺子喂食开始:

让您的服务器响应:

iwillreaduponjsonp({'status':'ok'});

像这样在客户端发出 jsonp 请求:

$.ajax({
    url: 'http://localhost:8000/EchoWithGet',
    data: 's=boo!',
    type: 'GET',
    dataType: 'json',
    jsonp: false, jsonpCallback: "iwillreaduponjsonp",
    success: function(res) {
        alert('yay');
    },
    error: function(a,b,c) {
    alert(a + ", " + b + ", " + c);
    }
});

/勺子喂食结束

于 2012-06-18T16:04:34.267 回答