2015-10-12 110 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()