我正在使用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托管在我的服务器上
我现在从本地主机使用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);
}
});
我收到一个错误,错误z,is x.responseText = "undefined"
Error: jQuery171008073005825281143_1328259709467
我不知道我到底犯了什么错。我是个新手。
谢谢。
发布于 2012-02-03 09:23:41
在这种情况下,必须将通过GET-params接收到的函数名打印为callback-parameter(jQuery171008073005825281143_1328259709467,而不是在服务器端打印"functionName“。
您不能对名称进行硬编码,每次请求都不同。)
发布于 2012-02-03 10:25:08
我并不是说自己是专家,只是一个感兴趣的旁观者。
从上一篇文章看,似乎是测试工具出错了,比如你的页面。困难之处在于-如何处理动态回调名称?我深入研究了一下,发现了一个使用asmx webservices和httpmodules来获得你想要的东西的例子。
Accessing Remote ASP.Net webservices
如果我是你,我会将测试页面重做为were服务(对不起,不是很WCF,我知道),并用你自己的方法连接这个模块。在JsonHttpModule
中,看起来Write
方法正在做有趣的工作,也就是将响应写入包装在一个动态回调方法签名中,该签名是从查询字符串( JQuery将把它放在那里)中拾取的。
不幸的是,看起来你还有一些工作要做。也许有更好更快的方法,但我找到的只有这些。
https://stackoverflow.com/questions/9126041
复制