.htaccess вызывает проблемы с Ajax - PullRequest
0 голосов
/ 07 марта 2011

Я использую этот код Javascript, чтобы пометить темы как избранные:

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?tid=1234 в более симпатичный /thread/1234.

С первым URL все работает нормально, но /thread/1234 вызывает ошибку. enter image description here Нажмите на подчеркнутую ссылку, чтобы вернуться: enter image description here

Ответ HTML является копией всей страницы! Почему один и тот же документ с единственным различием между URL-адресами /thread?tid=1234 и /thread/1234 ведет себя по-разному?

UPDATE:

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

Улучшенная строка .htaccess решила проблему.

Ответы [ 2 ]

4 голосов
/ 07 марта 2011

Попробуйте использовать модификатор [QSA] в своем htaccess.

На первый взгляд, ваша проблема в том, что значения ajax = 1 и act = fave не добавляются после перезаписи URL.

Таким образом, RewriteRule должно быть:

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

А потом твой код:

xmlhttp.open("GET", "thread/"+tid+"?ajax=1&act=fave", true);
0 голосов
/ 07 марта 2011

Должна быть проблема при захвате события AJAX в PHP - попробуйте var_dump для переменных GET ... Я думаю, что вы пропустите "идентификатор ajax":)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...