Ajax在数据库中插入值null

时间:2015-01-28 15:49:36

标签: php jquery mysql ajax

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

这是我的HTML

<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';
}

2 个答案:

答案 0 :(得分:0)

首先,正如您在评论中提到的那样,$("#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",
    });

答案 1 :(得分:0)

请改变您的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/