的JavaScript。单击按钮将数据插入数据库

时间:2013-11-21 21:47:00

标签: javascript php html mysql database

我需要简单的事情,通过点击按钮将数据插入数据库,但我不能成功。

这是button.php

<form method="post" action="" onsubmit="return display()">
<input type="text" name="name" id="name22" placeholder="">
<input type="submit" name="submit" value="Send"><br>

<div id="answer22" class="answer"></div>

这是获取用户输入的词的功能,我需要将其写入数据库。

function display(){
var i;
var d = new Date();
var n = d.getDate();
    for (i=1;i<=30;i++) {
      if(i==n) {
 var ans    =   document.getElementById("name"+ i).value
 document.getElementById("answer"+ i).innerHTML="Jūsų atsakymas: "+ans.bold();
    var ajax = new XMLHttpRequest(),
url = 'button_sql.php?answer=' + encodeURIComponent(ans);
ajax.open("GET", url, true);
ajax.send();
    }
    }
return false;
}

这是我的db.php我不知道如何正确使用它。

<?php
    session_start();
    $name = John; 
    $answer= $_SESSION['answer22']; // I've tried this but unsuccessful
    $mysqli = new mysqli("localhost","asd","asd","asd");


if ($stmt = $mysqli->prepare("INSERT into myTable (answer, userName) VALUE (?,?) ")) {
if (!$mysqli->set_charset("utf8")) {
    printf("Error loading character set utf8: %s\n", $mysqli->error);
} else {
//    printf(" ", $mysqli->character_set_name());
}


$stmt->bind_param('ss', $answer, $name);

   $stmt->execute();

   if ($stmt->error != '') {
       echo ' error:'.$stmt->error;
   } else {
       echo 'success';
   }
   $stmt->close();
} else {
   echo 'error:'.$mysqli->error;
}

$mysqli->close();
?>

我尝试过使用它,但没用:

<form method="post" action="button_sql.php" onsubmit="return display()">

所以有人可以帮助我吗?非常感谢你。

2 个答案:

答案 0 :(得分:1)

问题在于,如果在使用旧模型添加的事件侦听器中使用return false,则会阻止默认操作。

在您的情况下,由于display,您的事件监听器return false会阻止表单(正在提交)的默认操作。

如果您想在不重新加载页面的情况下提交表单,则应使用AJAX代替。

例如,使用以下内容:

var ajax = new XMLHttpRequest(),
    url = 'button_sql.php?answer' + i +'=' + encodeURIComponent(ans);
ajax.open("GET", url, true);
ajax.send();

您也可以使用onreadystatechange

db.php

$answer = $_GET['answer22'];

答案 1 :(得分:0)

false函数中返回display将导致表单无法提交,如果您希望表单实际提交,则应返回true