【问题标题】:Test if a WordPress page exists using JavaScript before redirecting to it在重定向到之前使用 JavaScript 测试 WordPress 页面是否存在
【发布时间】:2012-08-26 10:01:35
【问题描述】:

我的链接是这样的:

 http://localhost:8081/wordpress/?p=535

如何使用 JavaScript 重定向到此页面?我不熟悉? 语法,但我觉得我应该能够使用帖子的 ID 发送某种请求?

类似:

redirect("p="+postid);

只调用window.Location 对我不起作用,因为如果帖子不存在,那么我希望能够做其他事情。另外,我不希望它直接指向本地主机。它需要指向网站的根目录...

然后是这样的:

if (request("p="+postid) exists) {
    redirect("p="+postid);
}

【问题讨论】:

    标签: javascript html wordpress web-applications redirect


    【解决方案1】:
    window.location = "http://localhost:8081/wordpress/?p=535";
    

    更新:- 评论后
    虽然这不是应该使用但可以使用的技巧
    尝试向 url 发送一个 ajax 请求,如果它成功返回一些内容重定向,如果有 404 错误,则执行其他操作。

    【讨论】:

    • 我想知道是否还有其他方法,尽管这可行。就像,我曾经执行 ajax 请求。我需要做的不仅仅是重定向,也就是说,如果帖子不存在,我想做其他事情。
    • @user1274649 - 如果是这种情况 1) 您应该在问题中这么说,并且 2) 您可能需要使用 JavaScript 在服务器端而不是客户端执行此操作。
    • 您无法在客户端检测 URL 是否有效。
    • @Philipp 你可以。看我的回答。
    • @DaoWen 是的,我可能会发布另一个问题。我不擅长表达我需要做的事情。这个地方真的需要不那么居高临下,我不会付钱给你们来帮助我或让任何人做志愿者。我总是得到帮助,但也有人抱怨我提出问题的方式。你们都知道,如果我问的问题不能充分表达我想要的东西,我可以发布另一个问题......这没什么大不了的!
    【解决方案2】:
    document.location.href = "http://localhost:8081/wordpress/?p=535";
    

    如果你想先检查页面是否存在,你可以这样做:

    var addr = "/wordpress/?p=535"; // here with a relative url
    $.ajax({
        type: 'HEAD',
        url: addr,
        success: function() {
            document.location.href = addr;
        }
    });
    

    这将发出一个 HEAD 请求(因此不下载内容)以检查页面是否存在,如果正常则仅更改当前位置。

    请注意,如果需要,您可以不使用 jQuery 来执行此操作,如果需要,我会让您确定确切的语法。

    但这只有在两个页面来自同一个域时才有效。

    【讨论】:

    • ^那很好,我可以使用 jQuery。所以,@dystroy 这有点帮助。我的下一个问题是删除“localhost”的必要性 - 我怎样才能使它就像“/wordpress/?p=" + pid; URL 真的不应该被硬编码!
    • 我认为这不会起作用,因为他不是在寻找随机页面,而是在寻找随机的 post-ID。由于所有更改的是查询字符串,因此支持帖子的服务器端框架可能不会返回 HTTP 404,而是返回一个普通页面(300 OK),该页面有一条错误消息,提示用户该帖子不存在.
    • 如果你愿意,你可以做相对 URL,甚至是相对协议:paulirish.com/2010/the-protocol-relative-url
    • @DaoWen 检查this query 答案的 HTTP 标头:即使正文中有内​​容,它也是 404 代码
    • HTTP 是从浏览器到服务器进行查询的协议。 Ajax 既是一组旨在不同步替换窗口内容的做法,也是为此常用的 jquery 函数的名称(这是我能在评论中做出的最好解释......)。
    【解决方案3】:
    window.location.href = "http://localhost:8081/wordpress/?p=535";
    

    【讨论】:

      【解决方案4】:

      您可以像这样将可变的帖子 ID 添加到位置:

      var postID = 535;
      window.location = "http://localhost:8081/wordpress/?p="+postID;
      

      既然您已经更新了您的问题,我认为这显然不是 JavaScript 的工作。如果你想检查一个页面是否存在,你应该在服务器端进行检查,因为只有服务器端代码可以访问你的数据库,在那里它可以检查特定的帖子 ID 是否确实存在。

      您当然可以编写一些 AJAX 接口,其中 JavaScript 启动并查询服务器端代码以查看帖子是否存在,然后您将得到回复并采取相应措施 - 但是对于这个问题,这似乎真的过于复杂了。

      【讨论】:

      • 这听起来确实像一个轮回的方法,但是,如果帖子 ID 存在,但页面被“禁用”....也许我可以做那个检查。跨度>
      【解决方案5】:

      要将用户发送到另一个 URL,请使用

      window.location.href = 'http://localhost:8081/wordpress/?p=535'
      

      “?”之后的内容是 URL 的一部分,旨在由服务器端程序处理。

      【讨论】:

      • 谢谢!和有什么区别?和一个 & - 我都用于 ajax 请求 - 你知道吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-16
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 2017-04-10
      • 2023-01-21
      • 1970-01-01
      相关资源
      最近更新 更多