问题是,当使用mod_rewrite重写url时,它不会调用ajax请求。
但当我从链接中删除最后一个斜杠时,它就起作用了。
示例链接:
有了这个url,它就可以工作
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');
我使用malsum创建的插件jquery表单。
形式示例:
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>
这是因为您的相对URI的基已更改。最初,当页面为/user-list.php
时,基础为/project
,并且浏览器正确地填充与/project/
基础的相对链接。但是,当浏览器转到像/project/user-list/
这样的页面时,基础突然变成/project/user-list
,它试图将其附加在所有相关URL之前,因此没有加载它们。
您可以使链接成为绝对链接,也可以更改页面标题中的URI基(在<head> </head>
标签之间):
<base href="/project/">