Ajax 在数据库中插入值空


Ajax Insert value null in database

当我提醒所有字段值时,它们看起来很完美,但是当我尝试使用 PHP 插入数据库时,所有值都null。发生了什么事情?

这是我的网页

<form action="ajax.php" id="myform" method="post">
  <input type="hidden" id="userid" name="userid" value="<?php echo $user_id; ?>" />
  <input type="hidden" id="courseid" name="courseid" value="1" />
  <li class="active">
    <div id="#mybox">
      <a class="" id="media-play1" state="1"><i class="fa fa-play-circle-o"></i> Welcome <p>55s</p></a>
    </div>
  </li>
</form>

JQuery Ajax

$("#media-play1").on("click",function(e){
    e.preventDefault();
        var userid = $("#userid").val();
        var courseid = $("#courseid").val();
        var coursename = $("#coursename").text();
        alert(userid);
        alert(courseid);
        alert(coursename);
    $.ajax({
        url: 'ajax.php',
        async: true,
        cache: true,
        data: alert("userid=" + userid + "&courseid=" + courseid + "&coursename=" + coursename),
        type: 'POST',           
        //data:alert($(this).serialize()),
        success: function(){alert('success');},
        //dataType: "json",
    }); });

我的 PHP 文件

session_start();
include_once('admin/conn.php');
if(isset($_POST['userid'])){
echo $userid = $_POST['userid'];
echo $courseid = $_POST['courseid'];
echo $coursename = $_POST['coursename'];
$queryin = mysql_query("INSERT INTO `tranings` (`id`, `userid`, `courseid`, `traninigname`) VALUES ('','".$userid."','".$courseid."','".$coursename."')") or die(mysql_error());
if($queryin){
  echo 'insert';
} else {
  echo 'not insert';
}

请像这样更改您的Ajax呼叫:

$.ajax({
        url: 'ajax.php',
        async: true,
        cache: true,
        data: "userid=" + userid + "&courseid=" + courseid + "&coursename=" + coursename,
        type: 'POST',           
        //data:alert($(this).serialize()),
        success: function(){alert('success');},
        //dataType: "json",
    });

在数据中使用警报。除此之外,我还建议使用serialize方法,它更好的选择是以下示例:http://api.jquery.com/serialize/

首先,

正如您问题的评论中所述,$("#coursename")元素不在您提供的 html 中,因此var coursename = $("#coursename").text();等于什么都没有。

至于为什么你的数据没有传递给你的php的问题,你正在传递一个对alert()的调用作为你的ajax调用中的数据属性,而它应该是一个返回数据的函数或类似的对象

$.ajax({
        url: 'ajax.php',
        async: true,
        cache: true,
        data: {
             userid: userid,
             courseid: courseid,
             coursename: coursename
        },
        type: 'POST',           
        //data:alert($(this).serialize()),
        success: function(data){
             console.log(data); // log the returned data
             alert('success');
        },
        //dataType: "json",
    });