当前位置: 首页 > 面试题库 >

AJAX帖子被重定向取消

贺跃
2023-03-14
问题内容

我正在编写一个小脚本来捕获链接点击,并将链接的URL保存到数据库表中,以便跟踪在特定页面上每个链接被点击了多少次。链接是指向外部站点的。

因此,我在JavaScript函数中捕获了click事件,使用jQuery发布到将数据保存在MySQL中的PHP页面,然后JavaScript函数将用户重定向到他们单击的链接的URL。

我遇到的问题是,由于重定向的原因,该帖子似乎从未完成。我已经通过在post回调内部调用redirect来解决此问题,但是这增加了几秒钟的延迟,因为直到发布完成后才被调用。我正在寻找一种仅发布数据并立即重定向用户的方法,而无论发布成功与否。

这是具有解决方法的当前代码。它工作正常,但增加了延迟:

function trackClicks(event)
{
    var clicked = $(this).attr('href');

    $.post
    (
        $('#track-click-post-url').attr('value'),
        {
            action: 'track_landing_page_clicks',
            clicked_url: clicked,
            nonce: $('#track-click-nonce').attr('value')
        },
        function( response )
        {
            window.location = clicked;
        }
    );

    event.preventDefault(); 
}

这就是我想做的,但是当我尝试时,它永远不会完成:

function trackClicks(event)
{
    var clicked = $(this).attr('href');

    $.post
    (
        $('#track-click-post-url').attr('value'),
        {
            action: 'track_landing_page_clicks',
            clicked_url: clicked,
            nonce: $('#track-click-nonce').attr('value')
        }
    );

    window.location = clicked;
    event.preventDefault(); 
}

问题答案:

jQuery不提供您要查找的内容的回调。以下是可用的就绪状态:

Value   State   Description
0   UNSENT  open()has not been called yet.
1   OPENED  send()has not been called yet.
2   HEADERS_RECEIVED    send() has been called, and headers and status are available.
3   LOADING Downloading; responseText holds partial data.
4   DONE    The operation is complete.

您正在寻找readystate 2,因为这是您最早知道服务器收到消息的事实。

这应该可以帮助您:

var xhr = new XMLHttpRequest();
xhr.open("POST", clicked);
xhr.onreadystatechange = function() {
    if (xhr.readyState >= 2) window.location = clicked;
};
xhr.send($('#track-click-post-url').attr('value'));

https://developer.mozilla.org/zh-
CN/XMLHttpRequest
进行进一步阅读。



 类似资料:
  • 问题内容: 我正在使用访问管理(AM)服务器创建社交登录页面。当用户单击登录按钮时,我将对AM服务器进行一次http调用。AM服务器生成带有身份验证cookie的HTTP 301重定向响应到社交登录页面。我需要以某种方式遵循此重定向响应,并在Web浏览器中显示新内容。 用户界面:ReactJS 请求: 响应 反应代码: 如何跟踪重定向响应并在Web浏览器中显示新内容? 问题答案: Request.

  • 问题内容: 在Django views.py文件中处理POST请求时,有时需要将其重定向到另一个URL。我重定向到的网址是由同一Django views.py文件中的另一个函数处理的。有办法做到这一点并维护原始POST数据吗? 更新:我为什么要这样做的更多解释。我有两个Web应用程序(我们称它们为AppA和AppB),它们接受用户在文本字段中输入的数据。当用户单击提交时,将处理数据并显示详细结果。

  • 问题内容: 我有一个网站,所有请求都通过(无提示)被无提示地重定向到,然后PHP用于显示正确的页面(通过解析)。 我想知道是否也可以将POST数据提交到假地址? 我目前有这样的表格… 我的规则是 我的支票工作正常。 但是,这似乎删除了应该发送给它的所有POST数据。 有没有办法保留帖子数据?我不想使用GET,因为它不能发送太多信息,尽管使用简单的查询表可能不会出现问题。 这是我重定向到的 问题答案

  • 我已经使用Apache301重定向到“重定向”实现了SEO URL。cfm’位于网站的根目录中,处理所有URL构建和内容交付。 在301重定向期间,Post数据丢失。 到目前为止找不到解决方案,我们尝试将post方法排除在重写之外-最坏的情况是,我们可以将旧类型的URL用于post方法。 有什么可以做的吗? 谢啦

  • 问题内容: 我有一个多维数组,其中包含426个较小的数组,其中还包含4个属性。.下面是426个数组之一的示例… 我正在将带有jquery的ajax函数的数组发布到php文件,这会将它们添加到数据库中。我的问题是,数组在发布到php文件时似乎被砍掉了。实际上只有大约一半的数组到达了php文件… 这使我相信通过ajax发布时可能存在文件大小限制。但是,我的数组大小似乎相对较小。 我正在WAMP上运行我

  • 问题内容: 我在页面上发生了一个jQuery Ajax请求。在PHP方面,我正在检查会话是否处于活动状态并正在执行某些操作。如果会话不活跃,我想将用户重定向到php中的另一个页面(header redirect)。我该怎么做。 我知道如何在javascript中实现它(即,如果session_fail然后更改window.location,但是我可以在php / cakephp中做些什么 问题答案