2015-10-12 107 views
2

这个函数适用于加载一个外部页面内部的div,它通过一个$_POST变量,点击工作在加载同一个外部页面的第一条记录上,其中$_POST变量来自于查询。Ajax only only first record?

$(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

不能反复使用同一个ID和在同一页上。切换到课程。 – Ohgodwhy

+0

你在每条记录上都有'id = ContactID'吗?在有效的HTML中,您应该有唯一的ID,其他任何可能会导致问题。 – JimL

+0

@Ohgodwhy - 很好!这和使用getElementsByClassName一样简单吗? –

回答

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})); 
    }); 
}); 
+0

您的解决方案揭示了一个新问题,似乎第一个记录ContactID是唯一正在加载的外部页面。 –

+0

现在找出...为什么? –

+0

'tm-reserve-form.php'的返回值是多少?没有完整的代码,我很难看到大局。 –

0

这是event delegation问题,改变

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

}); 

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

}); 

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

0

你应该发布你的html代码,以帮助我们帮助你... 如果添加了新的dom元素,附加在它们上的动作的脚本将不起作用,因为它们并不存在于该脚本的负载中。切换到:

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