Ajax只加载第一条记录


Ajax only loading first record?

此函数用于在传递$_POST变量的div中加载外部页面,并在从查询中加载具有$_POST变量的相同外部页面的第一条记录上单击工作。

 $(document).ready(function(){
// load index page when the page loads
$("#form").load("tm-reserves-form.php");
$("#record").click(function(){
// load home page on click
    var ContactID = document.getElementById('ContactID').value;
    $("#form").load("tm-reserves-form.php", {"ContactID": ContactID});
    });
});

不起作用的是,这似乎只传递了第一个记录变量,而没有传递其他变量。我可以点击第一个记录和外部页面的数据加载。我点击其他记录和div不加载新的数据从点击。我有一个页面,从mysql查询创建一个客户列表,记录循环内部是一个隐藏的输入字段与主键。对我错过了什么有什么想法吗?我想也许可以解绑定click,但那也不起作用。

HTML代码

<div id="record"><?php do { ?><input type="hidden" name="ContactID" id="ContactID" value="<?php echo $row_tm_reserves['ContactID']; ?>"><!-- Other strings --><?php } while ($row_tm_reserves = mysql_fetch_assoc($tm_reserves)); ?></div>  

帮助!提前感谢!

问题是#form内容在每个load上得到替换

我的解决方案:

你可以在#form中创建一个新元素,例如<p>,并将append添加到它,即:

$(document).ready(function(){
$("#form").load("tm-reserves-form.php");
$(document).on("click","#record",function(){
    var ContactID = document.getElementById('ContactID').value;
    $("#form").append($(document.createElement("p")).load("tm-reserves-form.php", {"ContactID": ContactID}));
    });
});

这是event delegation的问题,更改

$("#record").click(function(){
});

$(document).on("click","#record",function(){
});

主要是确保你只有一个id作为record在你的页面

你应该张贴你的html代码,以帮助我们帮助你…如果添加了新的dom元素,在其上附加动作的脚本将无法工作,因为它们在脚本加载时不存在。切换到:

$(document).on("action","element",function()