.htaccess页面重定向对AJAX响应有影响

时间:2014-01-19 07:10:59

标签: javascript php jquery ajax .htaccess

我正在开发类似Facebook的社交网站。帖子显示在主页上。他们可以被喜欢和评论。 如果喜欢一个帖子,那么 LIKE TABLE 会通过AJAX进行更新,并将其计数加一。 likes.php文件更新了 LIKE TABLE并返回递增的值<span class = 'likeCount'>. $likeCount .</span>,并将其附加到like按钮。

这适用于home.php,但不适用于user.php用户个人资料页面。 user.php提取仅与特定用户相关的帖子。你得到PHP错误 每当您尝试对user.php页面中的帖子进行评论或评论时。当我alert( msg );它显示请求页面的整个HTML代码时,user.php有PHP错误,某些变量未定义。该URL实际上与此http://localhost/mysite/user.php?userID=yax类似,但它被重定向并由.htaccess重写为http://localhost/mysite/user/yax。我想这是导致问题的原因,因为同样的AJAX在home.php中工作正常。

AJAX代码:

$(".mlike").click(function () {
    $(".murconform").submit(function(e){
        return false;
    });
    var $this=$(this);
    var post_id = $(this).val();
    var user_id = $(".user_id").text();
    alert('Post: '+post_id +' User: '+user_id);
    var request = $.ajax({
      url: "likes.php",
      type: "POST",
      data: { post : post_id , user : user_id },
      dataType: "html"
    });
    request.done(function( msg ) {    
        $this.prev('.likecount').html( msg ); 
    });
});

.htaccess代码:

RewriteEngine  on
RewriteBase /mysite/user/

RewriteCond %{THE_REQUEST} /user\.php\?user=([^\s&]+) [NC]
RewriteRule ^ %1? [R=302,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ user.php?user=$1 [L]

过去三天,我的工作非常沮丧和停止。任何帮助将得到适当的赞赏。感谢。

2 个答案:

答案 0 :(得分:1)

由于您的AJAX调用正在发出POST请求,因此您可以添加规则以跳过重写的POST请求:

RewriteEngine  on
RewriteBase /mysite/

RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^ - [L]

RewriteCond %{THE_REQUEST} /user\.php\?user=([^\s&]+) [NC]
RewriteRule ^ %1? [R=302,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ user.php?user=$1 [L,QSA]

答案 1 :(得分:1)

好吧,试试这个:

在你.htaccess中添加以下规则:

RewriteRule ^post_to_likes$ path/to/likes.php

现在你的Javascript代码使用这个:

$.post('hxxp://your.url/post_to_likes',data,callback,'html');