Jsonp结果无法在我的asp.net-mvc网站上运行

时间:2011-09-26 04:59:48

标签: jquery asp.net-mvc json jsonp

我试图让jsonp调用jquery和我的asp.net-mvc网站。 I found this article which i tried to copy但我的回调中没有得到断点:

这是我的jquery代码:

         $.ajax({
                url: "http://www.mySite.com/MyController/Terms",
                type: "GET",
                dataType: "jsonp",
                timeout: 10000,
                jsonpCallback: "localJsonpCallback"
            });

            function localJsonpCallback(json) {
                 var terms = json.HTMLText;
                 $("#term2").html(terms);
            }

这是我的控制器代码:

    public JsonpResult Terms()
    {
        var data = GetData();
        return this.Jsonp(data);
    }

JsonpResult this.Jsonp are defined as per this page

所以我似乎无法得到一个回调但是当我打开firebug脚本部分时,我确实看到一个文件列出的时候是url并且有:

 Terms?callback=localJsonpCallback

当我查看内容时,我看到了正确的json对象内容:

localJsonpCallback({"HTMLText":"PRIVACY POLICY: Your privacy is very important to us"});

所以这告诉我数据会回到客户端,但回调似乎没有被触发,文本输入也没有被填充。

任何人都可以找到我正在做的事情的问题,或者对于为什么这不起作用有任何解释?

1 个答案:

答案 0 :(得分:1)

您没有为ajax请求定义success函数。您使用的jsonpCallback参数仅定义将由服务器用于包装JSON响应的查询字符串参数的名称。

所以试试这样:

$.ajax({
    url: 'http://www.mySite.com/MyController/Terms',
    type: 'GET',
    dataType: 'jsonp',
    timeout: 10000,
    jsonp: 'jsoncallback',
    success: function(json) {
        var terms = json.HTMLText;
        $('#term2').html(terms);
    }
});

同时结帐following answer