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

时间:2016-02-22 14:16:50

标签: javascript php jquery ajax

我在使用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”)。

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

1 个答案:

答案 0 :(得分:3)

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

改变这个:

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