0

$.ajax jquery 呼び出しの成功呼び出しで実行されているこのコード スニペットがあります。

success:function(results){
    if(options.payload)
    {
        eval("AddReview."+options.payload+"("+results+")");
    }
}

結果変数には html を含めることができ、関数にパススルーしたくないようです。これはこれを行う正しい方法ですか、それともより良い方法を考えられますか? このメソッドは基本的に、jquery の $.ajax 機能を可変関数ペイロードとインターフェースすることを可能にします。または、この場合はオブジェクト関数のペイロードです。

4

2 に答える 2

4

確かにもっと良い方法があります。この場合は必要ありませんeval

if (options.payload) {
    AddReview[options.payload](results);
}
于 2013-01-21T22:40:12.367 に答える
4

オブジェクトは基本的に連想配列です。これを使って。

AddReview[options.payload](results);

Blenderが述べたように、ifresultsは文字列引数のリストで、これ'hello', 'stack', 'overflow'を行うことができます。

var addReview = AddReview[options.payload];

var args = $.map(results.split(','), function(arg) {
    return $.trim(arg).substr(1, $.trim(arg).length - 2);
});

addReview.apply(addReview, args);
于 2013-01-21T22:40:26.960 に答える