PHP POST数据数组为空

PHP POST数据数组为空,php,jquery,ajax,post,Php,Jquery,Ajax,Post,我正在使用HTML、PHP和AJAX创建搜索字段。 以下是我的HTML代码: <form action="search.php" id="search_form" method="post" > <div class="search_bar"> <input type="text" name="search_text" id="search_text" placeholder="Search anything" > </div&

我正在使用HTML、PHP和AJAX创建搜索字段。 以下是我的HTML代码:

<form action="search.php" id="search_form" method="post" >
    <div class="search_bar">
    <input type="text"  name="search_text" id="search_text" placeholder="Search anything" >
    </div>
    <div class="search_button">
    <button type="submit" id="search_button"  name="search_submit" >Search</button>
    </div>
    </form>
在PHP中,我尝试了以下方法:

$obj = $_POST['myData'];
echo $obj;
print_r($_POST);
我得到的只是:

注意:第9行C:\xampp\htdocs\workspace\MakeMyApp\WebContent\search.php中的未定义索引:myData

我也尝试过:

file_get_contents('php //input')

但我也得到了空数组。我不知道到底是什么问题。我遗漏了什么吗?

对不起,我不能评论,因为我没有足够的“声誉”

我试着复制你的问题,它似乎对我来说很好

这是HTML页面

<html>
<head>

<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>

<script type="text/javascript">
$(document).ready(function(){

    $('#search_button').click(function(event) {

    var search_data = $('#search_text').val();

    var postData ={
            "content":search_data};

    event.preventDefault();

    $.ajax({
        type: 'POST',
        url: 'search-submit.php',
        data:{myData: postData},
        error: function()
        {
           alert("Request Failed");
        },
        success: function(response)
        {        
            alert(response);
        }
    });

});

});
</script>

</head>
<body>
<form action="search.php" id="search_form" method="post" >
    <div class="search_bar">
    <input type="text"  name="search_text" id="search_text" placeholder="Search anything" >
    </div>
    <div class="search_button">
    <button type="submit" id="search_button"  name="search_submit" >Search</button>
    </div>
    </form>
</body>
</html>

您是否在浏览器控制台中查看了请求/响应?如果您从等式中删除AJAX,PHP是否工作?请不要假设设置了
$\u POST
super。在访问它之前,请检查它是否存在。您是否检查了您的请求标题
内容类型
应用程序/x-www-form-urlencoded
)?@Legionar将数据更改为字符串与此问题无关。传递对象是最常见的做法,那么我的代码中可能出现的错误是什么??还是其他错误??像文件配置??你能告诉我你是如何知道请求没有正确提交的吗?您是否尝试过像我上面所做的那样提醒响应?我怀疑您的表单工作正常,但您看不到输出。我为响应添加了警报。令人惊讶的是,我在警报中得到了正确的响应,但不是来自PHP文件OK,我认为您没有理解ajax请求是如何工作的。您正在做的是在“后台”中将数据提交到PHP页面,这意味着您将无法实际看到PHP正在检索什么。如果您从页面中完全删除了所有javascript,您应该会看到表单提交到search.php页面,并且它将输出收到的内容。您的代码没有问题,只是我觉得您不理解它。此外,您在警报中看到的响应是PHP文件的输出。PHP文件接收表单提交,表单的输出以一个名为“response”的变量返回给ajax方法,您将在警报中输出该变量。
file_get_contents('php //input')
<html>
<head>

<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>

<script type="text/javascript">
$(document).ready(function(){

    $('#search_button').click(function(event) {

    var search_data = $('#search_text').val();

    var postData ={
            "content":search_data};

    event.preventDefault();

    $.ajax({
        type: 'POST',
        url: 'search-submit.php',
        data:{myData: postData},
        error: function()
        {
           alert("Request Failed");
        },
        success: function(response)
        {        
            alert(response);
        }
    });

});

});
</script>

</head>
<body>
<form action="search.php" id="search_form" method="post" >
    <div class="search_bar">
    <input type="text"  name="search_text" id="search_text" placeholder="Search anything" >
    </div>
    <div class="search_button">
    <button type="submit" id="search_button"  name="search_submit" >Search</button>
    </div>
    </form>
</body>
</html>
<?php
echo '<pre>';
print_r($_POST);
echo '</pre>';
?>
$(document).ready(function(){

    $('#search_form').submit(function() {
        var formData = $(this).serialize();

    $.ajax({
        type: 'POST',
        url: 'search-submit.php',
        data: formData,
        error: function()
        {
           alert("Request Failed");
        },
        success: function(response)
        {        
            alert(response);
        }

    });

    return false;

});

});