gpt4 book ai didi

javascript - 通过javascript获取JSON【跨域】

转载 作者:行者123 更新时间:2023-11-28 20:22:37 24 4
gpt4 key购买 nike

请帮助我解决以下情况:

有一个页面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

因此您的脚本应考虑回调参数:

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 相差甚远。

关于javascript - 通过javascript获取JSON【跨域】,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17978817/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com