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 回答