2011-03-07 87 views
0

我用這個Javascript代碼線程標記爲收藏:的.htaccess導致問題阿賈克斯

function fave(tid){ 
xmlhttp = createXHR(); 
if(xmlhttp){ 
    xmlhttp.onreadystatechange = function(){ 
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200){ 
    get("fave"+tid).innerHTML = xmlhttp.responseText; 
    } 
    } 
    xmlhttp.open("GET", "thread?act=fave&tid="+tid+"&ajax=1", true); 
    xmlhttp.send(null); 
} 
} 

我的.htaccess文件包含此行RewriteRule ^thread/([0-9]+)? /thread?tid=$1 [L],這更靚/thread/1234變成/thread?tid=1234

隨着第一個網址一切正常,但/thread/1234會導致一個錯誤。 enter image description here 點擊帶下劃線的鏈接回報: enter image description here

響應HTML是一整頁的副本! 爲什麼只有/thread?tid=1234/thread/1234網址之間的唯一區別的文檔具有不同的行爲方式?

UPDATE:

RewriteRule ^thread/([0-9]+)? /thread?tid=$1 [L,QSA] 

改進的.htaccess線解決了這個問題。

+1

thread?act = fave&tid =「+ tid +」&ajax = 1與您的重寫規則不完全匹配,所以我認爲它沒有被重寫 – 2011-03-07 17:08:57

回答

4

嘗試在你的htaccess中使用[QSA]修飾符。

第一次看,你的問題是重寫URL後,ajax = 1和act = fave值不會被追加。

所以重寫規則應該是:

RewriteRule ^thread/([0-9]+)? /thread?tid=$1 [L,QSA] 

然後你的代碼:

xmlhttp.open("GET", "thread/"+tid+"?ajax=1&act=fave", true); 
+0

[ QSA]做到了真的有幫助。非常感謝! – 2011-03-07 17:14:37

0

必須有內捕捉PHP中的AJAX事件問題 - 嘗試的var_dump的GET瓦爾...我認爲你會錯過「ajax標識符」:)