gpt4 book ai didi

javascript - url回调函数不工作

转载 作者:行者123 更新时间:2023-11-28 02:10:59 25 4
gpt4 key购买 nike

如何正确使用回调函数,因为它不起作用。我想从服务器端检索我的 json 值到客户端。

对于初学者,我尝试了这个以查看其是否有效。

示例代码

index.html

<button onClick = "Json()">Click Here</button>

我的.js

function Json() 
{
var url = "http://www.sample.com/test.js?callback=displayUser";
var script = document.createElement('script');
script.src = url;
document.body.appendChild(script);

}

function displayUser(json)
{
alert("working");

}

测试.js

var obj = { "a": "hey", "b": "what?"}

但没有返回任何警报,所以我猜它不会继续我的 displayUser 函数。

最佳答案

如果你想在 test.js 中调用 displayUser(),你必须在 test.js 中有代码来调用它。它不会因为你把它放在 URL 中而被调用。您需要将代码从 URL 中解析出来,然后调用它。

或者,您也可以在脚本完成加载时连接一个通知,然后在 之后从 test.js 外部自己调用 displayUser() test.js 已完全加载。

要检测外部脚本文件何时成功加载并自行调用 displayUser(),请参阅 this reference .

如果你想从 test.js 脚本文件本身获取回调值并从 test.js 中执行它,这是我所知道的唯一方法这样做:

window.displayUser = function() {
// do whatever
}

var scripts = document.getElementsByTagName("script");
for (var i = 0; i < scripts.length; i++) {
var url = scripts[i].src;
// extract filename and callback parameter from the URL
var matches = url.match(/\/([^\/]+)\?.*callback=(.*?)(&|$)/);
if (matches && matches[1] == "test.js") {
// call the callback function
window[matches[2]]();
}
}

关于javascript - url回调函数不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8392013/

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