Ajax只加载第一条记录?

时间:2015-10-12 17:20:57

标签: javascript php jquery mysql ajax

此函数适用于在传递$_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查询创建一个客户列表,在记录循环内是一个带有主键的隐藏输入字段。对我失踪的任何想法?我想也许可以取消绑定点击,但这也不起作用。

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>  

帮助!并提前致谢!

3 个答案:

答案 0 :(得分:0)

这是event delegation的问题,更改

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

});

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

});

主要确保您的网页中只有一个id作为record

答案 1 :(得分:0)

你应该发布你的HTML代码,以帮助我们帮助你...... 如果添加了新的dom元素,那么附加操作的脚本将无法工作,因为它们在该脚本的加载时不存在。切换到:

let postView = storyboard!.instantiateViewControllerWithIdentifier("InfoPostView") as! InformationPostingViewController
        presentViewController(postView, animated: true, completion: nil)

答案 2 :(得分:0)

问题是#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}));
    });
});