使用AJAX将数据插入数据库时​​出现问题

时间:2013-06-13 04:01:14

标签: php jquery ajax

我对此代码段有疑问,它无效:

.
.
.
<a href="#" id="$_GET['id1']" onclick="addToDb(<?php echo $_GET['id2'];?>)">Its a link</a>
.
.
.

addToDb()”功能:

<script>
     function addToDb(e)
     {alert(e);
         $.post("add_to_db.php",
         {
             id2:e,
             id1:this.attr("id")
         },
         function(data,status){
            alert("Data: "+data+"\nStatus: "+status);
         });
     }
 </script>

此功能有效,因为“alert(e)”给出了“id2”的值。可能id1:this.attr("id")出了问题,我试过“alert(this.attr("id"))”,但没有用。

add_to_db.php”页面为:

<?php
  $connection=mysql_connect("localhost","root","") OR die('Could not connect: '.mysql_error());
  mysql_select_db("db_user",$connection);
?>
<?php
$id2=htmlspecialchars(trim($_POST['id2']));
$id1=htmlspecialchars(trim($_POST['id1']));
?>

<?php
$duplicacy_check="select * from tbl_name where id2='$id2' && id1='$id1' LIMIT 1";
$duplicacy_check_result=mysql_query($duplicacy_check) or die(mysql_error());
    if($duplicacy_check_result)
  {
?>
      <script>
          alert("Its already added !");
      </script>


<?php
      exit();
  }
else
  {
      $query="INSERT INTO tbl_name(id2,id1) VALUES('$id2','$id1')";
      mysql_query($query) or die(mysql_error());
?>
      <script>
          alert("Added to the db");
      </script>
<?php
  }
?>

不要与“id1”,“id2”,“tbl_name”等混淆,或者“id1”和“id2”的顺序混淆,我知道。

请帮助我,我在最近两天遇到这个简单的事情。

2 个答案:

答案 0 :(得分:0)

请尝试以下:

<a href="#" id="$_GET['id1']" onclick="addToDb(<?php echo $_GET['id1'];?>, <?php echo $_GET['id2'];?>)">Its a link</a>

<script>
     function addToDb(a, e)
     {
         $.post("add_to_db.php",
         {
             id2:e,
             id1:a
         },
         function(data,status){
            alert("Data: "+data+"\nStatus: "+status);
         });
     }
 </script>

答案 1 :(得分:0)

我相信错误就像你说的那样:this.attr(“id”) 示例:http://jsfiddle.net/fAHye/

将您的功能更改为:

<script>
     function addToDb(elm, e)
     {alert(e);
         $.post("add_to_db.php",
         {
             id2:e,
             id1:elm.getAttribute("id")
         },
         function(data,status){
            alert("Data: "+data+"\nStatus: "+status);
         });
     }
 </script>

和HTML到

<a href="#" id="<?php echo $_GET['id1']; ?>" onclick="addToDb(this,<?php echo $_GET['id2'];?>)">Its a link</a>

注意:<?php echo $_GET['id1']; ?>

此外,触发器位于链接中的事实可能会在页面发生变化时给您带来一些麻烦,请尝试使用其他标记或删除默认链接http://api.jquery.com/event.preventDefault