2013-04-28 60 views
0

我使用的htaccess的漂亮网址...用逗号htaccess的阿贾克斯

但现在,我不明白为什么AJAX请求返回“404未找到”有多个参数。背后的htaccess

  • 网址:delete.php ID = htaccess的后1,2,3,4工作完美

    网址:删除/ 1,2,3,但不工作(错误404)

.htaccess中:

Options +FollowSymLinks 
    RewriteEngine On 

    RewriteCond %{SCRIPT_FILENAME} !-d 
    RewriteCond %{SCRIPT_FILENAME} !-f 

    RewriteRule ^delete/(\w+)$ ./delete.php?id=$1 

和Ajax代码:

$('#delete').click(function() { 
    var Checkboxes = new Array(); 

    i = 0; 
    $("li input:checked").each(function() { 
     Checkboxes[i] = $(this).val(); 

     i++; 
    }); 

    $.ajax({ 
     type: "POST", 
     url: "delete/" + Checkboxes, //<-problem is here maybe problem with htaccess and multiple value? 
     success: function (msg) { 
      alert("Data deleted: " + msg); 
     } 
    }); 

});

但是,我不明白哪里是问题?

回答

1

\w(wordcharacter)in regex是[a-z0-9A-Z_]的快捷方式,不包含逗号。这就是为什么你的规则不匹配1,2,3,并因此得到一个404错误。

如果从改变你的重写规则:

RewriteRule ^delete/(\w+)$ ./delete.php?id=$1 

RewriteRule ^delete/([a-z0-9A-Z,]+)$ ./delete.php?id=$1 

它应该工作。

+0

谢谢,现在它的工作是完美的... – Kate 2013-04-28 17:02:11

+0

如果'id's总是只有数字,你可以只写'[0-9,]'而不是'[a-z0-9A-Z,]因为你已经限制了有效的输入。 – 2013-04-28 17:04:08