1

JQuery と JSON を使用してサーバーからデータを取得しています。getBooksDoneFunc この関数を一度だけでなく呼び出すことができるようにする必要があるため、変数として定義しました (getBooks完了したとき)。残念ながら、asgetBooksDoneFuncの中から呼び出すことはできません。なんで?この関数を呼び出す最良の方法は何ですか?signInOKwindow["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。のアイデアはSOの回答window["getBooksDoneFunc"]();から取られました

アップデート:

var booksJSON = {};
window["getBooksDoneFunc"](booksJSON);

getBooksDoneFuncパラメータを指定して呼び出す必要がありますが、呼び出しはgetBooksDoneFunc失敗します。signInOKの外側で定義されて$(document).ready(function(){ });いますが、その内側で呼び出されます。

4

3 に答える 3

2

試す:

function getBooks(){
  return $.getJSON( "bookstore.json" );
}

window.getBooksDoneFunc = function(json) { 
  $.each(json.books, function(i, json){ .......... });
}

getBooks().done(getBooksDoneFunc);

$(document)ready(function() {
  function signInOK(){
    var booksJSON = {};
    window.getBooksDoneFunc(booksJSON);
  }
});
于 2013-04-17T00:09:35.900 に答える
1

window["getBooksDoneFunc"]();動作する場合は、グローバル関数にアクセスしたいが、変数に格納されている関数名がわからない場合にgetBooksDoneFunc()使用します。window

getBooksDoneFunc()あなたの場合、変数に関数 self (関数名の文字列ではない) を既に格納しているため、ハードコーディング文字列を配置することは意味が少なく、同じことを行うだけです。

うまくいかないのは、変数がグローバルでない場合は、スコープを確認してください。

于 2013-04-17T00:13:34.107 に答える