可以't使用php脚本插入ajax数据

Can't insert ajax data with php script

本文关键字:脚本 插入 ajax 数据 php 使用 可以      更新时间:2023-09-26

我有这个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