0
標題是我總結它的最好方法。如何解釋這件事有點模糊。 基本上,如果我在html文件中包含了持有JSON函數的JavaScript文件,那麼觸發JSON函數 - 回調起作用。但是,如果我只是從它自己的文件中調用JSON函數 - 回調從不會觸發。不知道這是否是某種JavaScript或Web瀏覽器安全功能。對於解釋會很有幫助。如果從自己的文件中調用函數,JSON回調不會觸發
以下是一些示例。
工作版本:
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.
});
有沒有錯誤?這一行:'刪除窗口[callback];'。你可能想'刪除window.jsonCallback;'。應該不重要。 – freakish
其實,現在我檢查。我確實在json_url.php上有錯誤。 錯誤:「未捕獲的ReferenceError:jsonCallback未定義」 我使用的是Chrome,並在元素視圖中看到過。 需要注意的是,如果它不起作用,腳本是Chrome擴展程序加載的UserScript。我認爲這與它有關。可能是某種形式的範圍。 –
給我們一些更多的信息。腳本如何被加載以及擴展的作用是什麼?通常擴展和背景頁面是分開的。因此'window'變量在後臺是另外的東西,而其他的東西是在後臺。 – freakish