6

jQuery $.getリクエストが成功したときに呼び出される関数に、事前定義された変数を渡すことは可能ですか?

以下の例のように、PHP スクリプトは「bar」を返します。

var extra = "foo";
$.get(baar.php, function(data, extra){
    alert(extra + data);
});

したがって、私の目標は、世界に「foobar」を宣言するアラート ボックスです。

ありがとう。

4

3 に答える 3

4

渡す必要はありませんextra。JavaScript スコープの仕組みにより、コールバック内で使用できます。そう:

var extra = "foo";
$.get('baar.php', function(data){
    alert(extra + data);
});
于 2013-05-07T20:11:36.023 に答える
1

私はそれが可能だとは思わない。ただし、関数内で外部変数を使用できます

var extra = "foo";
$.get(baar.php, function(data){
    alert(extra + data);
});
于 2013-05-07T20:12:24.430 に答える
1

この投稿が古いことは知っていますが、同じ問題があり、次の人のために解決策を投稿すると思いました。基本的に、bfalvretto が上で述べたように、jquery の .get() および .post() 関数は非同期であるため、リモート URL を取得するまでに、変数の値は異なっていました。
私の解決策は、その .get() 部分を独自の別の関数にスローして、コールバックの範囲を制限することでした。これは私が思いついたものです:

$("#SomethingClick").click(function(e) {
   e.preventDefault();

    $.post("..getURL", { id: 123 }, function(data) {
       for (i = 0; i < data.rows.length; i++) {
        ExternalFunction(data.rows[i].Value1, data.rows[i].Value2);
    }
    });
});
...
function ExternalFunction(value1, value2) {
    $.get("/Core/ContactViewer/" + contactID, function (data2) {
        $("someoutputdiv").html("<div>" + value1 + ": " + value2 + "</div>");
    });
}

お役に立てれば。

于 2015-03-31T19:27:43.533 に答える