在AJAX调用完成后,使用PHP传递JavaScript函数

时间:2013-08-11 18:36:52

标签: php javascript jquery ajax function

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

PHP页面echo是返回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();";
}

这甚至可能吗?我问的原因是我觉得它更安全。有可能以用户身份破解状态......因此他可以更改它并且正在调用错误的函数。如果我在服务器端执行此操作,则更安全。

或者有更好的选择吗?

2 个答案:

答案 0 :(得分:0)

您可以调用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中只是echo name

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

答案 1 :(得分:0)

您正在寻找的内容称为GetScript:http://api.jquery.com/jQuery.getScript/

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

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