Jus*_*tin 1 javascript jquery function dynamic
好吧,我正在使用一些jquery创建动态弹出窗口.但是,定期响应将是我需要调用的函数的名称而不是实际数据,我试图弄清楚如何执行此操作.
success: function(response) {
var obj = $.parseJSON(response);
if (obj.response == 'false') {
$('#popuperrDisplay').html(obj.msg);
$('#popuperrors').show();
} else {
if (obj.response == 'redirect') {
window.location.href = obj.msg;
} else if (obj.response == 'function') {
call obj
} else {
$(this).dialog('close');
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的jquery的当前部分.我需要弄清楚如何通过json_encode发送JS函数的名称,并让JS实际调用该函数
如果函数是全局定义的(在window对象上),你可以简单地调用它:
if (obj.response === 'function' && // 1
typeof window[obj.msg] !== 'undefined') { // 2
window[obj.msg](); // 3
// or...
window[obj.msg].apply(null, obj.args); // 4
}
Run Code Online (Sandbox Code Playgroud)
编辑:(window[]语法)
为了进一步说明,window['showPopup']访问对象的showPopup成员window.这跟做的一样window.showPopup.只是,[]语法具有接收string而不是实际代码的优点.
window['showPopup']将返回一个对象(如果已定义); 让它成为我们特定例子的一个功能.
然后我们使用()运算符调用该函数对象,如下所示:window['showPopup']().再次,这与这样做:window.showPopup().
编辑2 :(使用参数调用)
如果必须使用参数数组调用该函数,我们可以使用apply.调用该函数将如下所示:
window['showPopup'].apply(null, arrayOfArgs);
Run Code Online (Sandbox Code Playgroud)
arrayOfArgs包含参数的数组在哪里.
| 归档时间: |
|
| 查看次数: |
397 次 |
| 最近记录: |