错误。从ASP.NET页面获取JSONP

时间:2012-02-03 09:00:21

标签: javascript jquery asp.net jsonp

我正在使用Jquery-JSONP

从ASP.NET页面进行跨域提取

我的ASP.NET页面看起来像这样;

    public partial class Test : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write("functionName({'test_param':12345});");
        }
    } 

这是作为test.aspx

托管在我的服务器上的

我现在正在使用localhost中的JQuery并尝试从test.aspx中获取数据;

            $.ajax({
                dataType: 'jsonp',
                url: 'http://abc.com/GTalk/test.aspx?callback=?',
                success: function () {
                    alert("Success");
                },
                error: function (x, y, z) {
                    alert("error" + x.responseText);
                }
            });

我收到错误x.responseText = "undefined" 错误z是Error: jQuery171008073005825281143_1328259709467

我无法弄清楚我在做什么错。我是新手。

感谢。

2 个答案:

答案 0 :(得分:1)

在服务器端而不是“functionName”,您必须打印通过GET-params收到的函数名称回调 - 参数(在这种情况下为 jQuery171008073005825281143_1328259709467 )。 / p>

您无法对名称进行硬编码,每次请求都会有所不同)

答案 1 :(得分:0)

我并不是自称是专家,只是感兴趣的旁观者。

从上一篇文章看,测试工具是错误的,即您的页面。困难在于 - 你如何应对动态回调名称?我挖了一下,我发现了一个使用asmx webservices和httpmodules来获得你想要的东西的例子。

Accessing Remote ASP.Net webservices

如果我是你并且会将测试页重做为web服务(对不起我知道的非常WCF)并使用您自己的方法连接模块。在JsonHttpModule内,看起来Write方法正在进行有趣的工作,即它将响应写入包装在一个动态回调方法签名中,它从查询字符串中获取(其中JQuery会说的。)

不幸的是,看起来你需要做一些工作才能让它工作。可能会有更好的方式,但我找到的只是。