0

我正在尝试使用 onSubmit() 函数插入我的 MySQL 数据库...对于主要部分,我的函数有效。但是,它一直1在我的数据库中插入logbook_id字段所在的位置(logbook_id每次都不应该是 1)。这是我的(相关)html:

echo '<div class="logbook_box" id="logbook'.$id.'" 
      style="display: block; overflow: hidden;">';
echo '<form action="cgi-bin/read_log.php" method="post"
      onSubmit="return ajaxSubmit(this, ' . $id . ');">' . 

'<input type="hidden" value="'.$id.'" id="id" name="id" />'.
'<input style="float: right; width: 20%" type="submit" value="Mark as Read" />' .
'</form>';

这是 onSubmit 函数:

<script type="text/javascript" src="cgi-bin/jquery-2.0.3.js"></script>
<script>
var ajaxSubmit = function(form, id) {
    div = document.getElementById("logbook" + id);
    div.style.display = "none";
        // fetch where we want to submit the form to
        var url = $(form).attr('action');

        var id = $('#id').val();

    // setup the ajax request
    $.ajax({
    url: url,
    data: { id : id },
    dataType: "json",
    success: function() {
        if(rsp.success) {
            alert('Marked as read, thanks!');
            }
    }
    });

     // return false so the form does not actually
     // submit to the page
     return false;
}
</script>

这是我的 PHP 文件:

<?php

include('/var/www/olin2/includes/functions.php');
$con = connect_db();
session_start();

$id = isset($_POST['id']);
$username = $_SESSION['username'];

$query = 'insert into read_logbook(logbook_id, username) 
          values("'.$id.'",     "'.$username.'")';
mysqli_query($con, $query) or die(mysqli_error($con));


?>

因此,<div>当单击提交时,它应该会消失,这表明它id正在正确传递。调用了 PHP 脚本,但它要么不向数据库输入任何内容,要么(更奇怪的是)如果我将 PHP 从 更改为而不更改表单中的方法,它会将我的用户名和值提交1到数据库中。$_POST$_GET

我是 ajax/javascript 的新手,所以我确信它与函数有关,但我很困惑,完全不知所措......有什么想法吗?

4

2 回答 2

5

为您的 ajax添加type选项,post因为您正在检索值,因为post...默认是get..

 $.ajax({
  url: url,
  data: { id : id },
  type: "POST", //<---here
  ....

并确保 logbook_box 的 id 始终不同而不是 1

并改变这个

$id = isset($_POST['id']);   //this return either true or false. so your $id is either 0 or 1

试试这个

$id = isset($_POST['id'])?$_POST['id']:""; //or $_POST['id']; 
于 2013-09-04T05:04:00.200 回答
0

试试这个

include('/var/www/olin2/includes/functions.php');
$con = connect_db();
session_start();

if(isset($_POST['id'])){
$id = $_POST['id'];
$username = $_SESSION['username'];

$query = 'insert into read_logbook(logbook_id, username) 
          values("'.$id.'",     "'.$username.'")';
mysqli_query($con, $query) or die(mysqli_error($con));
}
于 2013-09-04T05:17:15.793 回答