[英]Get JSON via javascript [Cross-Domain]
请在以下情况下帮助我:
页面p1.aspx只有一个按钮:
<button id="btn1" onclick="btnclick();">Button</button>
<script type="text/javascript">
$('#btn1').click(function () {
$.getJSON("http://localhost/p2.aspx", function (data) {
$.each(data, function (i, field) {
alert(field);
});
});
});
</script>
上面是我想通过javascript获取JSON文本的方式。
Web应用程序http://localhost/p2.aspx
重定向到内部的http://localhost/p3.aspx
。 然后页面http://localhost/p3.aspx
再次重定向回http://localhost/p2.aspx?code=1
。
code=1
是我想在我的JavaScript代码中读取的值。 但这是行不通的。
在p2.aspx中,我生成如下的JSON数据
Response.Clear();
Response.ContentType = "application/json; charset=utf-8";
Response.Write(jsonString);
Response.End();
之后,我无法通过javascript读取json数据。 但是,如果我只是通过网络浏览器放置http://localhost/p2.aspx
,则它会在页面上获取json数据。
如果您想使用JSONP
则需要使用它。
因此,您的脚本应考虑callback
参数:
Response.Clear();
string callback = Request["callback"];
if (!string.IsNullOrEmpty(callback))
{
Response.ContentType = "application/javascript; charset=utf-8";
Response.Write(string.Format("{0}({1})", callback, jsonString));
}
else
{
Response.ContentType = "application/json; charset=utf-8";
Response.Write(jsonString);
}
Response.End();
然后在客户端上:
$.getJSON("http://localhost/p2.aspx?callback=?", function (data) {
...
});
注意callback
查询字符串参数如何设置为?
。 基本上,jQuery会将其转换为如下所示的请求:
http://localhost/p2.aspx?callback=jQuery123456789....
并且您的服务器端脚本当然应该返回JSONP
,这是包装在回调名称中的JSON
字符串:
jQuery123456789....({"code":1})
还要确保代码中使用的jsonString
变量是实际的JSON字符串(顾名思义)。 因为您在问题( code=1
)中显示的内容与JSON相距甚远。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.