さて、ここで楽しい問題です。次のようなオブジェクト配列があります。
objRequests = [
{
url: "/cgi-bin/script1.cgi",
dest: "#div1"
},
{
url: "/cgi-bin/script1.cgi",
dest: "#div2"
}
];
ここで、これらのオブジェクトを繰り返し処理して、jQuery の $.getJSON() メソッドを使用してサーバーから特定のアドレスに情報を読み込みます。コールバック関数を使って手の込んだ操作を行った後、'dest' で指定された ID を持つ div に HTML を配置する必要があります。 .
通常、コールバックに追加のデータを指定する必要がある場合は、無名関数を使用しますが、これは問題なく機能します。ここでの問題は、destination の変数ポインターが同じままであるように見えるため、各コールバックが起動するときに、destination が常に "#div2" に等しいことです。
私は次のことを試しました:
for (var loop = 0; loop < objRequest.length; loop++)
{
var exec = new function(objResponse)
{
processResponse(objResponse, objRequest[loop].dest);
}
exec.dest == objRequest[loop].dest;
$.getJSON(objConfig.strTicketScript, exec);
}
としても
for (var loop = 0; loop < objRequest.length; loop++)
{
var destination = objRequest[loop].dest;
var exec = new function(objResponse)
{
processResponse(objResponse, destination);
}
exec.dest == objRequest[loop].dest;
$.getJSON(objConfig.strTicketScript, exec);
}
しかし、何らかの理由で Firefox はまだ匿名関数で個別のデータを作成していないようです。各反復でデータへの一意の参照を取得する方法はありますか?