2011-07-10 46 views
0

编辑以便于理解。jQuery AJAX不会将值传递给AJAX调用

好的,所以问题是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!"; 

} 

?> 

所以这就是它...

+0

从太多的上下文/代码中筛选出你的问题会让其他人更容易/愿意给你一个答案。 –

+0

这是被回应或是纯HTML吗?

espradley

+0

@espradley它被回显为PHP $ entry_display。= <<< ENTRY_DISPLAY –

回答

0

尝试改变

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

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

伊夫假定“格”就是你正在寻找获得“身份证”的一个值。

你的代码片段的问题是你有混合JQuery与原始的JavaScript。如果你想要做你的方式(不使用jQuery来获取值),可以使用

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

是它的值必须通过的div我尝试了你的建议方法jQuery(this).closest('div')。attr('id' ),仍然没有运气,注释已被删除,但它仍然在MySQL中的PHP回声 –

+0

在这种情况下,'this'不是jQuery包裹的元素。 –

+0

发现它不是jQuery的问题,jQuery是120%正确的。现在问题是在MySQL查询中修复的 –

0

的问题是,<p>不含<div>。因此,.removeNoteparentNode不是p标签。此外,id属性应该是唯一的。我会从p删除nid,并简单地使用this.id