标题是我总结的最好方式。如何解释这个有点模糊。基本上,如果我在 html 文件中包含保存 JSON 函数的 javascript 文件,则触发 JSON 函数 - 回调有效。但是,如果我只是从它自己的文件中调用 JSON 函数 - 回调永远不会触发。不确定这是否是某种 javascript 或网络浏览器安全功能。非常感谢您的解释。
这里有些例子。
工作版本:
json.html:(精简)
<html>
<head><script type="text/javascript" src="json.js"></script></head>
<script>
JSON_Object(json_url, function(json_obj) {
alert(json_obj); // this version works!
});
</script>
<html>
json.js:
function JSON_Object(json_url, callback) {
// This function will return an object to the JSON data.
json_url = json_url + "&callback=jsonCallback";
var json_script = document.createElement("script");
json_script.setAttribute("src", json_url);
json_script.setAttribute("type", "text/javascript");
window.jsonCallback = function(jsonObjReturn) {
// cleanup
document.body.removeChild(json_script);
delete window[callback];
callback(jsonObjReturn); // use our callback function to return the data.
}
document.body.appendChild(json_script);
}
非工作版本 - json.js 中的另一个函数:
JSON_Object(content_page, function(json_obj) {
alert(json_obj); // This version doesn't work. Never called.
});