如何从ajax返回调用JavaScript函数

WAC*_*020 1 javascript php ajax json function

我有一个$ .POST调用,返回需要运行的函数的名称,但它不会执行该函数,我不知道为什么.

这是一个例子:

JS档案:

$(function(){
     $.post('test.php',{event: 'add'},
          function(data){
               data.func(data.msg);
          },'json');

     function test(msg){
          alert(msg);
     }
});
Run Code Online (Sandbox Code Playgroud)

PHP Ajax:

<?php
     switch($_POST['event']){
          case 'add':
               $output['func'] = 'test';
               $output['msg'] = 'This is add message';
               break;
          case 'delete':
               $output['func'] = 'test';
               $output['msg'] = 'This is delete message';
               break;
     }
     echo json_encode($output);
 ?>
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是ajax返回函数的名称(测试)但它不会运行该函数,我该如何解决这个问题?

str*_*ger 6

不要使用EVAL.

而是使用您想要执行的函数创建一个对象.例如:

var functionTable = {
    test: function (msg) {
        alert(msg);
    }
};

$.post('test.php', { event: 'add' }, function (data) {
    if (functionTable.hasOwnProperty(data.func)) {
        functionTable[data.func](data.msg);
    }
}, 'json');
Run Code Online (Sandbox Code Playgroud)