ajax表单请求不使用mod_rewrite

时间:2015-12-15 14:01:39

标签: php jquery ajax .htaccess mod-rewrite

问题是,当使用mod_rewrite重写url时,它不会调用ajax请求。

但是,当我从链接中删除最后一个斜杠时,它可以工作。

示例链接:

使用此网址

http://localhost/project/user-list

http://localhost/project/user_list.php

但是当url看起来像这样(添加斜杠结束)ajax请求无效。

http://localhost/project/user-list/

这是我的 .htaccess

RewriteEngine   On
RewriteRule     ^user-list/?$               user_list.php                 [QSA,L]

.js文件的调用如下所示:

<script src="<?php echo BASE_URL; ?>/js/file.js"></script>

BASE_URL 定义为:

define('BASE_URL', 'http://localhost/project');

我使用 jquery form 创建的插件 malsum

表格示例:

jQuery的:

$('#form_example').ajaxForm({ 
    success: function(result) {     
        alert("success");
    }       
});     

HTML:

<form id="form_example" action="process.php" method="post">
    <input type="text" name="name" placeholder="Enter your name" />
    <button type="submit">Submit</button>
</form>

1 个答案:

答案 0 :(得分:2)

这是因为您的相对URI的基数已更改。最初,当页面为/project时,基数为/user-list.php,浏览器会正确填充/project/基础的相对链接。但是当浏览器转到/project/user-list/这样的页面时,基础突然变为/project/user-list,它会尝试将其附加到所有相对URL之前,因此它们都不会加载。

您可以将链接设为绝对,也可以更改网页标题中的URI基数(在<head> </head>标记之间):

<base href="/project/">