PHP:如何返回数据作为 $.post 请求的响应?

Dri*_*kek 6 php ajax jquery post xmlhttprequest

我正在尝试使用 jQuery 创建一个简单的 post 函数。输入是客户的姓名,响应是其信息(地址、电话、年龄等)。到目前为止,我已经得到了这个:

脚本:

$(document).ready(function(){
    $("#getClientInfo").on('click', function(){
        $.post("getClientInfo.php", {
            name: $('#name').val()
        }) .done(function(data){
            console.log(data);
        }) .fail(function(xhr){
            errorShow(xhr.responseText);
        })
    });
Run Code Online (Sandbox Code Playgroud)

PHP:

$connection = include('dbConnection.php');
$name = $_POST['name'];
$query = mysqli_query($connection, "SELECT * FROM clients WHERE name = 
    $name");
$result = mysqli_fetch_array($query);
return $result;
Run Code Online (Sandbox Code Playgroud)

我知道它非常简单,并且它不会实现异常或防止 SQL 注入,但现在,我只想使用 .done() 函数在控制台中打印结果数组。但是,它没有返回任何响应。

有任何想法吗?先感谢您。

编辑:我希望数组是请求的响应,因此它显示在 Chrome 中:

图片

Mik*_*ike 4

您没有从 PHP 文件中获得任何输出,因为您的脚本没有产生输出的行。

return手册页

如果从全局范围调用,则当前脚本文件的执行结束。如果包含或需要当前脚本文件,则控制权将传递回调用文件。此外,如果包含当前脚本文件,则给定 return 的值将作为包含调用的值返回。

因此return不会产生输出,但会为调用函数的任何内容分配一个值:

function getSomething() {
    return 'something';
}
$something = getSomething();
Run Code Online (Sandbox Code Playgroud)

或者将为包含另一个文件的任何内容分配一个值。

索引.php:

<?php
$value = include('otherpage.php');
// $value == 'hello'
Run Code Online (Sandbox Code Playgroud)

其他页面.php:

<?php
return 'hello';
Run Code Online (Sandbox Code Playgroud)

相反,你需要做类似的事情:

echo json_encode($result);
Run Code Online (Sandbox Code Playgroud)