简体   繁体   English

无法使用PHP脚本插入Ajax数据

[英]Can't insert ajax data with php script

I have this jquery script 我有这个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>

and this insert.php 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);
?>

but when I try to click button with id=btn1 nothing happens, no errors, no messages in Chrome console and no data inserted in the database. 但是当我尝试单击id = btn1的按钮时,没有任何反应,没有错误,Chrome控制台中没有消息,并且没有在数据库中插入任何数据。 What is wrong here? 怎么了

edit#1: this is head part of my document: 编辑#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>

so jquery library is loaded here, I believe. 我相信jquery库已加载到这里。

In your case (note the & as a separator): 在您的情况下(请注意&作为分隔符):

'name='+name+'&last_name='+last_name

But jQuery does that for you if you specify your data as an object: 但是如果您将数据指定为对象,jQuery会为您完成此操作:

data: { name: name, last_name: last_name}

Try to bind the click event in the doc ready block: 尝试将click事件绑定到doc ready块中:

$(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

Issue seems to me is that you are binding an event to the element before DOM is ready as you have put your script tags. 在我看来,问题在于您已在放置DOM脚本之前将事件绑定到DOM上。

So instead you should wrap that with doc ready block. 因此,您应该使用doc ready块包装它。


Note: 注意:

Make sure you don't have any duplicate ids, what i meant is same ids for multiple elements in a single page. 确保您没有任何重复的ID,我的意思是单个页面中多个元素的ID相同。 So #btn1 length of the element should be only one 1 . 因此, #btn1元素的长度应仅为1 1

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM