我有这个jquery脚本
<script>
$("#btn1").click(function(e) {
e.preventDefault();
var name = $("#id1").val();
var last_name = $("#id2").val();
var dataString = 'name='+name+'&last_name='+last_name;
$.ajax({
type:'POST',
data:dataString,
url:'php/insert.php',
success:function(data) {
alert(data);
}
});
});
</script>
和这个insert.php脚本
<?php
$dbconn = pg_connect("host=localhost dbname=kinoseansy user=postgres password=postgrespass")
or die('Could not connect: ' . pg_last_error());
$name = $_POST['name'];
$last_name = $_POST['last_name'];
$result = pg_query($dbconn, "INSERT INTO contacts(address,phone_number,city,others)
VALUES('+1 123 456 7890', 'John', 'Doe','123');");
var_dump($result);
pg_close($dbconn);
?>
但当我尝试点击id=btn1的按钮时,什么都没有发生,没有错误,Chrome控制台中没有消息,数据库中也没有插入数据。这里怎么了?
编辑#1:这是我的文档的头部分:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Car Repair | Locations</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" media="screen" href="css/reset.css">
<link rel="stylesheet" type="text/css" media="screen" href="css/style.css">
<link href='http://fonts.googleapis.com/css?family=Open+Sans+Condensed:700,300' rel='stylesheet' type='text/css'>
<script type="text/javascript" src="js/jquery-1.7.min.js"></script>
<script type="text/javascript" src="js/jquery.easing.1.3.js"></script>
<script>
$("#btn1").click(function(e) {
e.preventDefault();
var name = $("#id1").val();
var last_name = $("#id2").val();
var dataString = {'name=':name, 'last_name': last_name};
$.ajax({
type:'POST',
data:dataString,
url:'php/insert.php',
success:function(data) {
alert(data);
}
});
});
</script>
所以我相信jquery库是在这里加载的。
在您的情况下(注意&作为分隔符):
'name='+name+'&last_name='+last_name
但是,如果您将数据指定为对象,jQuery会为您做到这一点:
data: { name: name, last_name: last_name}
尝试在文档就绪块中绑定click
事件:
$(function() { // <----doc ready starts
$("#btn1").click(function(e) {
e.preventDefault();
var name = $("#id1").val();
var last_name = $("#id2").val();
var dataString = 'name=' + name + '&last_name=' + last_name;
$.ajax({
type: 'POST',
data: dataString,
url: 'php/insert.php',
success: function(data) {
alert(data);
}
});
});
}); // <-----doc ready ends
在我看来,问题是在DOM准备好之前将事件绑定到元素,因为您已经放置了脚本标记。
因此,您应该使用doc ready
块来包装它。
注:
确保您没有任何重复的id,我的意思是同一个页面中多个元素的id相同所以元素的#btn1
长度应该只有一个1。