使用 jQuery 回调参数通过 AJAX 调用 PHP 函数

Calling PHP functions through AJAX using jQuery callback parameters

本文关键字:AJAX 调用 PHP 函数 jQuery 回调 参数 使用      更新时间:2023-09-26

我在使用 jQuery 时遇到 AJAX 结果的问题。

我已经定义了这些函数:

<script>
    function hello(callback, funct, val) {
        var ret = 0;
        console.log(val);
        $.ajax({
            type: 'GET',
            dataType: 'json',
            url: 'SGWEB/header.php',
            data: {
                'funct': funct,
                'val': val
            }
        }).done(function (data) {
            // you may safely use results here
            console.log(data);
            callback(data);
        });
    };
    function change() {
        hello(function (ret) {
                  console.log(ret);
                  $("#b1").text(ret);
              }, "hello", 1);
    }; 
    change();
</script>

SGWEB/header.php:

extract($_GET);
$validFunctions = array("readPin","hello");
if(in_array($funct, $validFunctions)) $funct();
// functions
// ....
function hello($val) {
    if ($val == 1) {
        echo "1";
    } else 
        echo "2";
}

我遇到的问题是 AJAX 只传递数据{'funct': funct}中的第一个参数并且它正在运行,但val被完全忽略(它总是回显"2")。

我该如何解决这个问题?谢谢

你忘记在 PHP 中将 $val 参数传递给你的函数

更改此设置:

if (in_array($funct, $validFunctions)) $funct();

对此:

if (in_array($funct, $validFunctions)) $funct($val);

另一个问题是,您的 AJAX 需要 JSON,因为您在此处定义它dataType:'json'但您没有发送它。我会像这样重做你的 ajax 调用,以便你也可以看到其他错误:

$.ajax({
    type: 'GET',
    url: 'SGWEB/header.php',
    data: {
        'funct': funct,
        'val': val
    },
    success: function (result) {
        console.log(result);
        callback(result);
    },
    error: function (xhr, textStatus, error) {
        console.log(xhr);
        console.log(textStatus);
        console.log(error);
    }
});