0

onSubmit() 関数を使用して MySQL データベースに挿入しようとしています... 主要部分では、関数は機能します。ただし、フィールドがある1DBに挿入し続けます(毎回1であってはなりません)。これが私の(関連する)htmlです:logbook_idlogbook_id

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

...default is ..として値を取得しているため、ajaxにtypeオプションを追加します。postpostget

 $.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 に答える