php - 如何从 ajax 返回调用 JavaScript 函数

标签 php javascript ajax json function

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

这是一个例子:

JS文件:

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

     function test(msg){
          alert(msg);
     }
});

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);
 ?>

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

最佳答案

请勿使用 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');

关于php - 如何从 ajax 返回调用 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4113046/

相关文章:

asp.net - 让 ASP.NET Cookieless Session 和 JQuery AJAX 完美结合

php - php 加速器是如何工作的?

php - 为什么不显示用户名?

javascript - 迪维 : Hide Button when clicked

javascript - 为什么 removeEventListener 对 React 安装的事件处理程序不起作用?

javascript - react : timing ajax request in render()

php - 如何返回一个 HTML 文件作为对 POST 请求的响应?

php - 表单不会传递隐藏值

javascript - 同步 Flex slider - flex-direction-nav(箭头)

javascript - Jquery 将参数添加到 $.ajax 上的函数