$(document).ready(function(){
$("#get_mem_det").click(function(){
$.ajax({
type: "POST",
url: "get_mem_detil.php",
data: { id: $("#HMID").val() },
success: function(result) {
$("#resl").html(result);
}
});
});
});
<?php
$sql_view = mysql_query("SELECT * FROM member_tb WHERE u_id <> '$userid' AND status='' ORDER BY mem_id ASC ");
while($res = mysql_fetch_assoc($sql_view)) {
<input id="HMID" name="HMID" type="hidden" value="'.$res['mem_id'].'" />'; ?>
<input type="button" id="get_mem_det" value="View" class="btn btn-small" onclick="popup('popUpDiv')" >
<?php } ?>
<div id="blanket" style="display:none;"></div>
<div id="popUpDiv" style="display:none;">
<a href="#" onclick="popup('popUpDiv')">Click Me To Close</a>
<div id="resl"></div>
</div>
AJAX工作正常。但#HMID
POST值在请求get_mem_detil.php
时不会发生变化,因此每次点击按钮都会产生相同的结果。我该如何解决?
提前感谢。
答案 0 :(得分:0)
$(document).ready(function(){
$("#get_mem_det").click(function(){
$.ajax({
type: "POST",
url: "get_mem_detil.php",
data: { id: $("#HMID").val() },
success: function(result) {
$("#resl").html(result);
}
});
});
});
将始终使用标识为HMID的第一个输入字段,您应该使用按钮调用一个函数(this.form),然后在函数中通过执行以下操作获取隐藏字段的值:
function func(form) {
var HMID = form.elements['HMID'].value;
$("#get_mem_det").click(function()
{
$.ajax({type: "POST",
url: "get_mem_detil.php",
data: { id:HMID},
success:function(result)
{
$("#resl").html(result);
}
});
});
}
然后发送HMID变量。
答案 1 :(得分:0)
问题是因为您要向页面添加具有相同id
属性的多个元素 - id
必须是唯一的。这意味着每当您选择#HMID
元素时,只会找到第一个元素,这使得它看起来好像值永远不会改变。尝试更改为使用类:
<?php
$sql_view = mysql_query("SELECT * FROM member_tb WHERE u_id <> '$userid' AND status='' ORDER BY mem_id ASC ");
while($res = mysql_fetch_assoc($sql_view)) { ?>
<input class="HMID" name="HMID" type="hidden" value="'<? echo $res['mem_id'] ?>'" />';
<input type="button" id="get_mem_det" value="View" class="btn btn-small" onclick="popup('popUpDiv')">
<?php } ?>
从那里你可以遍历以在按钮点击处理程序中找到输入:
$("#get_mem_det").click(function(){
var hmidVal = $(this).prev('.HMID').val();
$.ajax({
type: "POST",
url: "get_mem_detil.php",
data: { id: hmidVal },
success: function(result) {
$("#resl").html(result);
}
});
});