【发布时间】:2013-04-09 13:51:26
【问题描述】:
我正在使用 JQuery 和 JSON 从服务器获取数据。我定义了getBooksDoneFunc
作为变量,因为我不仅需要能够调用此函数一次(当getBooks 完成时)。不幸的是,我不能从signInOK 内部将getBooksDoneFunc 称为window["getBooksDoneFunc"]();。为什么?调用此函数的最佳方式是什么?
function getBooks(){ return $.getJSON( "bookstore.json" ); }
var getBooksDoneFunc = function(json) {
$.each(json.books, function(i, json){ .......... });
}
getBooks().done(getBooksDoneFunc);
function signInOK(){
window["getBooksDoneFunc"]();
}
PS。 window["getBooksDoneFunc"](); 的想法取自 SO answer
更新:
var booksJSON = {};
window["getBooksDoneFunc"](booksJSON);
getBooksDoneFunc 必须使用参数调用,但对getBooksDoneFunc 的调用失败。 signInOK 在 $(document).ready(function(){ }); 之外定义,但在其内部调用。
【问题讨论】:
-
如果这一切都包含在另一个函数中,例如
$(document).ready(function(){...});,那么getBooksDoneFunc将不存在于window下。 -
@ahren 听起来像是一个答案...
-
@kojiro - 很遗憾没有,因为我没有回答问题 “如果函数调用被定义为 var,如何调用?” 或 “什么是调用此函数的最佳方式是什么?”
-
您的 getBooksDoneFunc() 函数采用一个参数,但您尝试在没有任何内部 signInOK() 的情况下调用。
-
失败信息是什么?如果调用成功但没有参数,则
json未定义,您的$.each将抛出一个错误,因为json.books不存在,因为json未定义.
标签: javascript jquery