jQuery AJAX没有将值传递给AJAX调用

时间:2011-07-10 16:05:40

标签: php ajax jquery

编辑以便于理解。

好的,问题是jQuery没有将值传递给某个PHP文件,以便运行DELETE查询并删除您要求从数据库中删除的内容。

该脚本非常适用于另一个从MySQL请求信息并通过AJAX调用将其加载到php文件的文件。

问题可能出在这个脚本中的实际AJAX

   $(".removeNote").live('click',function() {
      $("#qpbox-content").show();
      $("#qpbox-overlay").show();
      $("#qpbox-loader").html("<img src='http://www.ajaxload.info/images/exemples/4.gif' />");

      var xhr = $.ajax({
         type: "GET",
         url: "_class/delete_notes.php",
         data: "ajax=1&nid=" + this.parentNode.id,
         success: function(html){
            $("#qpbox-utm").html(html);
            $("#qpbox-loader").html("");
         },
         error: function (XMLHttpRequest, textStatus, errorThrown) {$("#qpbox-loader").html(errorThrown);}
      });
   });

这是上面的代码应该从中得到值的部分

<p style="margin-bottom:3px;" id="$nid">
         <div id="$nid" style="float: right; padding: 4px;cursor: pointer;" class="removeNote">
         <img src="$icon_sys_delete" alt="remove note" title="remove note"/>
         </div>
         </p>

该值记为$ nid

这是实际的删除部分

<?php

include '../object/db.class.php';

if($_GET['ajax'] == '1') {

$nid = $_GET['nid'];

$query = mysql_query("DELETE FROM notes WHERE nid = '$nid'");
echo "Note removed!";

}

?>

就是这样......

2 个答案:

答案 0 :(得分:0)

尝试更改

 data: "ajax=1&nid=" + this.parentNode.id,

 data: "ajax=1&nid=" + jQuery(this).closest('div').attr('id')

我认为“div”是你想要获得“id”值的那个。

您的代码段的问题是您将JQuery与原始javascript混合使用。如果你想按照自己的方式去做(不使用jquery来获取值),你可以使用

 data: "ajax=1&nid=" + this[0].parentNode.id,

答案 1 :(得分:0)

问题是<p>不包含<div>。因此,parentNode的{​​{1}}不是.removeNote标记。此外,p属性应该是唯一的。我会从id中删除nid,然后只使用p