2012-01-04 81 views
1

我有一個數據表從MySQL數據庫通過PHP填充。第一列是一個標誌特徵,因此當任何特定行上的圖釘圖標被點擊時,數據庫被更新爲'y'或'n'。然後,我可以對此列進行排序,將我標記的所有行都放到表格頂部。由於我的表格很大,我決定通過Ajax來完成。但是,它只適用於第一次通話,然後變爲非活動狀態。第一次請求後,數據庫也不會更新。Ajax調用只更新一次

這裏是HTML/PHP。

<td align="center" id="pin_record"> 
<?php // Flag Column  
if ($row['flag'] == 'n'){ ?>   
    <a class="flag_image" href="list_all_quotes.php?id=<?php echo $row['quotes_id'].'_y'; ?>"> 
    <img src="../images/flag_off.gif" border="0" width="17" height="17" alt="Flag Off"> 
<?php } elseif ($row['flag'] == 'y'){ ?> 
    <a class="flag_image" href="list_all_quotes.php?id=<?php echo $row['quotes_id'].'_n'; ?>"> 
    <img src="../images/flag_on.gif" border="0" width="17" height="17" alt="Flag On"> 
<?php } ?> 
</a> 
</td> 

,這裏是jQuery的

function ajax_init() 
{ 
    $('#pin_record a:first-child').on("click",(flag_record)); 
} 

function flag_record() 
{ 
    var id_pin = this.href.replace(/.*=/,''); 
    var id_array = id_pin.split("_"); // split the quote id and pin 
    var id = id_array[0]; 
    var pin = id_array[1]; 
    this.id = 'flag_link_'+id; 
    $.getJSON('deletequote.php?ajax=true&id='+id+'&pin='+pin,set_flag); 
    return false; 
} 

function set_flag(data) 
{ 
    if(!data.success)return alert(data.serverMessage); 
    var href = '<a class="flag_image" href="list_all_quotes.php?id='+data.id+'_'+data.pin+'">'; 
    $('#flag_link_'+data.id) 
    .replaceWith(href+data.flagimg); 
} 

$(document).ready(ajax_init); 

我很新的使用Ajax所以任何幫助將不勝感激。

非常感謝, 克里斯

回答

2

您請求被緩存。通過使用獨特的URL打破緩存:

'deletequote.php?ajax=true&id='+id+'&pin='+pin,set_flag+"&now="+new Date() 
+0

您好,感謝我已經嘗試和測試,但這沒有工作的想法。無論如何,我已經把它留在原地。在第一個Ajax調用進一步點擊同一個鏈接後,完成一個完整的服務器請求,並完全繞過ajax代碼。 – 2012-01-05 09:58:16

+0

我在這裏錯過了另一個解決方案嗎? – 2012-01-06 09:04:29

+0

加載firefox +螢火蟲並打開NET面板。你可以看到你的請求發生了什麼。這可能是服務器響應問題。 – 2012-01-06 14:45:51