首页 > 解决方案 > Ajax 调用成功但 $_POST['value'] 为空

问题描述

问题已解决

这些问题似乎与浏览器有关。尝试使用不同的系统,它工作正常。

我正在编写实时搜索以使用 ajax 和 php 从数据库中显示用户的详细信息。表单字段的输入正确地传递到 ajax 文件。我检查了 console.log() 并且打印正确。之后,Ajax 调用发生,没有任何错误。但是当试图回显 $_POST['search'] 时,它正在打印空白空间。

搜索表单.php

<input type="text" placeholder="Search" class="search"/>
<div class="search-result"></div>

搜索.js

    $(function(){
    $('.search').keyup(function(){
        var search = $(this).val();
        //console.log(search);
        $.ajax({
            url:'search.php',
            data:{search:search,},
            type:'POST',
            success:function(data){
                console.log(data);
                $('.search-result').html(data);
            },
            error:function(){
                console.log("error");
            }
        });
    });
});

搜索.php

 <?php

include('core/init.php');
echo $_POST['search'];

?>

已编辑

我发现了这个问题,但不知道原因,也没有找到解决方案。基本上include('core/init.php');是不包括在内。我试过var_dump(include('core/init.php'));了,它返回 bool(false)。路径是正确的。使用ajax调用文件时需要做些什么includes吗?

标签: javascriptphpajax

解决方案


首先,你把这个改成data:{search:search,}这个 data:{search:search}

第二,试着把echo你的search.php变成这个 echo json_encode($_POST['search']);

对于更复杂的检查,您可以inspect element(在浏览器中按 F12),转到network 选项卡并在新选项卡中打开您的search.php文件。是显示你的期望值吗?

如果search.php显示预期值,请尝试在 windows (ctrl + F5) 中硬刷新您的浏览器以尝试更新您的 js


推荐阅读