2012-12-10 54 views
0

在SO上多次提问的问题上发布道歉,但我已经经历了许多这些问题,仍然无法解决我自己的问题。在JQuery中不工作的POST方法

我有一个索引页'index.php',带有一个JQuery脚本,用于在同一个目录中发布ID号为'delete.php'的ID号。 'delete.php'应该从MySQL数据库中删除与该ID号匹配的行。 'index.php'也应该从HTML中删除已删除的项目。

最后一步,从HTML中删除项目,但是虽然我在错误控制台中得到了一个“200 OK”响应,'delete.php'却什么也不做 - 我已经放入了检查echo语句,跑。

CODE 的index.php:

<!DOCTYPE html> 
<html> 
    <head> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"> </script> 
     <script> 
      jQuery(document).ready(function(){ 
       $(".deleteitem").click(function(){ 
        var parent = $(this).closest('tr'); 
        var id = parent.attr('id'); 
        $.ajax({ 
         type: "POST", 
         URL: "delete.php", 
         data: "id=" +id, 
         success: function(data){ 
          $('#'+id).remove(); 
         } 
        }); 
       }); 
      }); 
     </script> 
    </head> 
    <body> 
     <table> 
      <tr id="1"> 
       <td>Milk</td> 
       <td>3.99</td> 
       <td><button class="deleteitem"><img src="deletebutton.gif"></button></td> 
      </tr> 
      <tr id="2"> 
       <td>Bread</td> 
       <td>1.99</td> 
       <td><button class="deleteitem"><img src="deletebutton.gif"></button></td> 
      </tr> 
     </table> 
    </body> 
</html> 

delete.php:

 <?php 

mysql_connect("localhost", "root", "") or die(mysql_error()); 
mysql_select_db("tryit") or die(mysql_error()); 

$id = $_POST[id]; 

echo "DELETE.PHP HAS RUN<br>"; 

echo "ID = $id"; 

if (isset($id)) { 
    $query = "DELETE FROM tryit WHERE id = '$id'"; 
    mysql_query($query) or die('Error, query failed'); 
} 

?> 

任何线索,为什么这不工作大加赞赏 - 这是当仁不让的螺母!

+0

为什么'URL'在allcaps?它可能发布到同一页面。 –

+0

你确定mysql_connect(“localhost”,“root”,“”)和 mysql_select_db(“tryit”)正在执行,你的脚本没有死在那里吗? – Xocoatzin

+0

我试着改变dbase连接来产生一个错误 - 没有错误消息返回。我试图彻底删除连接,只留下echo语句 - 没有任何返回。即使我得到了200 OK响应,delete.php也没有运行。还尝试了小写的url - 没有改变。 – westernKid

回答

1

在您的PHP脚本中,而不是$_POST[id],您需要执行$_POST['id']

至于数据,jQuery需要一个对象或查询字符串。你传递一个查询字符串,所以应该没问题。

+0

'$ _POST [id]'是一个经典的PHP坏习惯,:) – luiges90

+0

是的,我明白了,但没有任何区别。 delete.php没有运行。 – westernKid

+0

这是一个错字 - 但纠正没有区别。 'delete.php'仍然无法运行。 – westernKid

0

尝试

$.ajax({ 
    type: "POST", 
    url: "delete.php", 
    data: {id: id}, 
    success: function(data){ 
     $('#'+id).remove(); 
    } 
}); 

网址应该小写!

+0

嗨 - 尝试过;仍然没有变化。我没有得到任何来自delete.php,与连接注释掉现在只包含的回声附和道:? \t ”; \t \t echo“ID = $ id”; \t // \t // if(isset($ id)){ \t // \t $ query =“DELETE FROM tryit WHERE id ='$ id'”; \t // \t mysql_query($ query)or die('Error,query failed'); \t //} \t \t?> – westernKid

+0

我编辑了答案,问题是,URL应该是 '网址'(小写),jQuery的不承认URL,并张贴请求本身(的index.php) – Xocoatzin

+0

我已将网址更改为小写,并将除delete.php之外的所有内容都删除,因此数据库连接可能没有问题。仍然从错误控制台得到“200 OK”,并且没有来自delete.php的响应。 – westernKid

0

解决:

的问题是不能在jquery的(与的情况下,灵敏度的异常“URL:”,这是一个错字)。

问题出在sql查询中。我有

$sql = "DELETE * FROM tryit WHERE id = '$id'"; 

,而它当然应该是

$sql = "DELETE FROM tryit WHERE id = '$id'"; 

(不带*)。