【问题标题】:mod_rewrite duplicates html elements hence breaking the pagemod_rewrite 复制 html 元素因此破坏了页面
【发布时间】:2020-08-09 19:36:13
【问题描述】:

我不确定发生了什么,但我最近尝试了 mod_rewrite 来修改我的网址。

原来的网址是这样的:ma​​in/index.php?board=announcements

我把它变成了这个:ma​​in/board/announcements

重要提示:没有公告文件夹或文件。我将它用作查询的 URL 参数。

我在我的 .htaccess 文件中使用了这一行来修改 url:

RewriteRule ^main/board/([0-9a-zA-Z_-]+) main/index.php?board=$1

问题在于,当我执行执行 ajax 调用的操作(例如发布消息或回复消息)时,它会复制页面的 html 元素。当我检查元素时,它显示我的页眉到页脚是重复的(例如,两个头部元素,两个导航),好像整个 html 页面都是重复的。

当我检查控制台时,它也生成了这个:

jquery-3.4.1.min.js:2 [Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience.

使用原始网址 main/index.php?board=announcements 时不会发生这种情况。我不知道发生了什么,真的。

感谢 Wesley,这是我最新的故障排除:

我的 ajax 调用之一示例

$(document).on("click", ".like i", function() {
var postid = $(this).closest("div").parent().find("input").val();
$.post("like.php", {
userid: id,
postid: postid
}, function(data) {
alert(data);
});
});

这是like.php的内容

<?php echo "Hello"; ?>

由于某种原因,它返回了整个 HTML 内容!使用原始网址时不会发生这种情况。可能是什么原因?

【问题讨论】:

  • 您能否展示您用于从 ajax 代码加载新 html 的 JS 以及发回该响应的 php 代码?我觉得这个问题很可能会在那里。可能是你和 JS 中的 html 的方式,可能在你想要 html() 或类似的时候使用 append()
  • 谢谢。我根据您的评论使用最新的故障排除更新了我的问题。我想我已经接近答案了,但是是的。我提供了 Ajax 代码和 PHP,尽管它们不是我的实际代码(我做了一些故障排除)。出于某种原因,即使 PHP 只应该返回“Hello”,它在使用数据回调时也会返回整个 HTML 内容。使用原始 url 打开页面时不会发生这种情况,只会在 mod_rewrite 修改的 url 上发生。
  • 得到了答案!谢谢你的提示。这对我帮助很大。 XD

标签: php jquery ajax mod-rewrite


【解决方案1】:

经过1-2小时的故障排除,问题出在设置了mod_rewrite时ajax调用中php文件的url。我检查了超过 15 个线程,没有提到 mod_rewrite 甚至破坏了 ajax url 的路径。但是,过去的线程中有一些答案说整个 html 仅在 url 不存在时返回。没想到错了,因为 Console Log 没有说找不到文件。

不管怎样,解决方法是设置php文件的绝对路径。

这是解决问题的确切网址:/main/like.php

【讨论】:

    猜你喜欢
    • 2011-06-25
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 2020-12-20
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多