javascript - url回调函数不工作

标签 javascript html json client-side

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

相关文章:

javascript - 谷歌地图仅针对正纬度/经度值绘制,如果传递负纬度/经度,则重置 NaN

javascript - 固定背景图像上的文本和图像 slider

javascript - 定位 Lightbox2 关闭按钮时遇到问题

java - 解析和读取一个json数组java

JSON的C#自动属性反序列化

javascript - 如何动态取消折叠 Bootstrap 导航栏?

javascript - Angular UI Router - 具有空 Url 的抽象父状态

html - 表的最后一 block 填充行的其余部分?

html - 是什么造成了这种间距?

c - 提取 jansson JSON 数据