【问题标题】:Ajax Insert value null in databaseAjax在数据库中插入值null
【发布时间】:2023-03-08 11:58:01
【问题描述】:

当我提醒所有字段值时,它们看起来很完美,但是当我尝试使用 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';
}

【问题讨论】:

  • 您没有名为“coursename”的 id,也没有相同的命名属性。
  • data: alert(...) 中的$.ajax({应该做什么?
  • 我无法理解 id call coursename 是什么意思?
  • 首先:在没有ajax的情况下调用PHP脚本时,是否有效?第二:在我看来,您的 PHP 代码中有额外的“回声”。
  • #coursename id="courseid" 等,但不是课程名称。

标签: php jquery mysql ajax


【解决方案1】:

请像这样更改您的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/

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 未捕获的 InvalidStateError:无法从“HTMLInputElement”读取“selectionDirection”属性:输入元素的类型(“隐藏”)不支持选择
    • 看到这个answer你现在遇到的问题,基本上是因为你在数据对象中传递jQuery对象而不是值字符串
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多