初学php遇到问题好多
////html代码
<div class="container">
<form>
<div class="form_group">
<label>用户名</label>
<input class="form-control username" type=" " name="">
</div>
</form>
</div>
<button onclick="sendMessage()" class="">确认</button>
<script>
function sendMessage(){
let username = $(".username").val();
console.log(username);//能正确打印
$.ajax({
url:'newWork.php',
type:'post',
data:{
'username':username
},
dataType:'json',
success:function(res){
console.log(JSON.stringify(res))
$(".text").text(res);
},
error:function(err){
console.log(JSON.stringify(err));
}
})
}
</script>
//传递正确//php代码
$username= $_POST["username"];
echo $username;//提示undefined
为什么php后台总是undefined

解决方案 »

  1.   

    先打印一下$_POST 可能你知道原因了
    应该是引号的问题  $username= $_POST["'username'"];
      

  2.   

    打印$_POST显示数组到字符串的转换
    $username= $_POST["'username'"];换成这个还是出错
      

  3.   

    用$_REQUEST接收一下看看 并且打映一下这个数组 看在里面没
      

  4.   

    贴出  var_dump($_POST)
      

  5.   

    贴出  var_dump($_POST)
    是空的
      

  6.   

    头部增加代码 error_reporting(E_ALL^E_NOTICE);,测试你的代码没有问题;let username = $(".username").val();,这后面的分号改成英文的,不然出错。
      

  7.   

    我这样做的楼主可以去试试:<!--html页面-->
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div class="container">
        <form action="http://127.0.0.1:8081/base/test.php" method="post">
            <div class="form_group">
                <label>用户名</label>
                <input type="text" name="username">
            </div>
            <input type="submit" value="确认">
        </form>
    </div>
    </body>
    </html>//php页面
    <?php
    var_dump($_POST);运行截图:
      

  8.   

    <input class="form-control username" type=" " name="username"> 
    username = $("username").val();
      

  9.   

    <input class="form-control username" type=" " name="username"  id="username"> 
    username = $("username").val();
      

  10.   

    json里面写双引号试一下 有时候不规范也不行的
      

  11.   

    谢谢,但是我想用Ajax实现呢
      

  12.   

    file_get_contents("php://input") 试试你这个问题的原因是:coentent-Type是 txt/html,$_POST只能获取特定格式的application/x-www-data-urlencoded和multipart/form-data具体资料看看https://www.php.net/manual/zh/reserved.variables.post.php
      

  13.   

    楼主是用什么框架了吗?怎么能$_POST为空呢
      

  14.   

    php文件头部增加
    error_reporting(0);
    或者把$username= $_POST["username"];改成$username= $_POST['username'];