0

私はこのような機能を持っています。できます。

問題

この関数myFunctionは、他の多くの関数によって呼び出され、成功した場合に実行する関数によって異なります。

質問

これはどのように解決されますか?ある種のコールバック?または、関数が知るために追加のパラメーターを送信する必要がありますか?

コード

function myfunction()
{
    var value = "myvalue";
    var post_url = "ajax.php";

    $.post(  
        post_url,
        {
             value: value,
        },
            function(responseText){  
                var json = JSON.parse(responseText);
                if(json.success)
                {
                    console.log('success'); 
                }
            }
        );
    }
}
4

3 に答える 3

2

関数パラメーターを追加し、成功時に呼び出します。

function myfunction(callback)
{
    var value = "myvalue";
    var post_url = "ajax.php";

    $.post(  
        post_url,
        {
             value: value,
        },
            function(responseText){  
                var json = JSON.parse(responseText);
                if(json.success)
                {
                    console.log('success'); 
                    //call callback 
                    callback();

                }
            }
        );
    }
}
于 2013-01-17T17:49:12.317 に答える
1

コールバックをmyfunction受け入れる:

function myfunction(callback)
{
    var value = "myvalue";
    var post_url = "ajax.php";

    $.post(post_url, { value: value }, callback);
}

そして、POSTが戻ってきたときに実行される任意の関数を渡すことができます:

myfunction(function(responseText){  
    var json = JSON.parse(responseText);
    if (json.success)
    {
        console.log('success'); 
    }
});
于 2013-01-17T17:47:12.833 に答える
0

はい、次のように、呼び出し元を識別するためのパラメーターが必要です。

function myfunction(caller) {
    if (caller == "Foo") {
        // some code
    }
}

myFunction("Foo");

または、グローバル変数を使用します

function myFunction() {
    if (caller == "Foo") {
        // some code
    }
}

caller = "Foo";
myFunction();
于 2013-01-17T17:49:35.530 に答える