0

次の$.post構文を使用して、データベースから json データを取得し、それを特定の (!) div に追加する関数に渡します。

$.post("request.php", { var1:'var1', var2:var2, .. }, myownfunction, "json" );

上記のこの行から、変数を関数に直接渡すことはできますか? いくつかの不具合により、スクリプトにバグを作成しました。

クラス「x」のdivがたくさんあり、ユーザーが1つを選択すると、そのクラスは「選択済み」に設定されます。上記の投稿リクエストの関数は、次のもののみを対象としています$('div#selected')。ただし、ユーザーが別の div を選択して応答が来るまでに、サーバーからのデータが間違った div に追加されます。

選択した div の id を関数に渡したいので、何がどこにあるのか混乱することはありません。それを行う方法はありますか?

現在、id を request.php に渡し、それを json の一部として返すことを考えていますが、それはエレガントではありません。

4

3 に答える 3

2

選択した div の id を関数に渡したいので、何がどこにあるのか混乱することはありません。それを行う方法はありますか?

はい、$.Proxyを使用して、クリックされた div のコンテキストで渡すことができます。そして、関数内で使用して id の id にアクセスしthis.idます。

$.post("request.php", 
                { var1:'var1', var2:var2, .. }, 
                $.proxy(myownfunction, elem), "json" );

関数内

function myownfunction( response )
{
....
    this.id // here will be the id of the element passed if it is the clicked div then you will get it here
....
}
于 2013-05-05T07:28:58.030 に答える
1

関数呼び出しを匿名関数にラップすると、必要なパラメーターを渡すことができます。

$.post( 
    "request.php", 
    { var1:'var1', var2:var2, .. }, 
    function( data, textStatus, jqXHR ) {
        myownfunction( data, textStatus, jqXHR, myVariable );
    },
    "json" 
);
于 2013-05-05T07:26:32.867 に答える
1

$.ajax代わりに使用すると$.post、そのcontext設定を使用して、必要に応じてコールバックのthis値を明示的に設定できます。

$.ajax('request.php', {
    type: 'POST',
    data: { ... },
    context: mydiv
}).done(myownfunction);

function myownfunction(data) {
    var id = this.id;     // extracting the element here
    ...
}         
于 2013-05-05T07:47:32.833 に答える