繁体   English   中英

完成AJAX调用后,通过PHP传递JavaScript函数

[英]Pass a JavaScript function with PHP after AJAX call is done

我正在做的是检查数据库中的用户状态。

PHP页面将状态回传给ajax调用,并根据状态执行功能。

这很好。 我知道我可以使用json,但现在就可以了。 我想要的不是回显用户状态,而是回显应执行的功能,并在ajax完成后执行它。

我的jQuery / ajax代码:

function checkstatus() {
    $.ajax({
    type: "GET",
    url: "./query/checkstatus.php",
    data: {}
    }).done(function(result) {
      if (result == "nieuw") {
        loadHomeNieuw();
      };
      if (result == "actief") {
        loadHome();
      };
    });
}

我想要但不起作用。 jQuery / ajax代码:

function checkstatus() {
    $.ajax({
        type: "GET",
        url: "./query/checkstatus.php",
        data: {}
    }).done(function(result) {
    });
}

PHP代码(无效):

if ($status == "nieuw") {
    echo "loadHomeNieuw();";
}

if ($status == "actief") {
    echo "loadHome();";
}

这有可能吗? 我问的原因是,我觉得它更安全。 可能会以用户身份入侵状态...以便他可以更改它并调用了错误的功能。 如果我在服务器端执行此操作,则会更安全。

还是有更好的选择?

你可以打电话给eval

function checkstatus() {
    $.ajax({
        type: "GET",
        url: "./query/checkstatus.php",
        data: {}
    }).done(function(result) {
        eval(result);
    });
}

但是有些人说这很邪恶,因此您可以返回一个名称并执行一个具有该名称的函数:

function checkstatus() {
    $.ajax({
        type: "GET",
        url: "./query/checkstatus.php",
        data: {}
    }).done(function(result) {
        window[result]();
    });
}

在PHP中只是回显名称

if ($status == "nieuw") {
    echo "loadHomeNieuw";
} else if ($status == "actief") {
    echo "loadHome";
}

您正在寻找的叫做GetScript: http : //api.jquery.com/jQuery.getScript/

这将执行返回的代码。 编码 :

$.getScript("./query/checkstatus.php");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM