如何正确使用回调函数,因为它不起作用。 我想从服务器端检索我的 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/