【问题标题】:Javascript / Ajax Redirect IssuesJavascript / Ajax 重定向问题
【发布时间】:2013-12-11 14:17:06
【问题描述】:

一般来说对代码很陌生,所以如果我没有正确解释自己,请提前道歉,

但我有一个表单,它会在提交时执行一段 JavaScript。

如果表单验证成功,那么它会调用一个 php 文件进行服务器端处理。

一旦服务器端处理完成,php 文件会返回一些数据(一个 url),然后用户会被重定向到(客户端)

这一切都可以在桌面(chrome、IE、FF)和现代移动设备上正常工作,但是重定向在某些设备上不起作用(一个是黑莓),我假设其他旧设备。重定向 URL 不是直接进入地址栏,而是放置在原始页面的 url 之后 - 这样会导致用户被重定向到一个当然不存在的页面。

以下是提交时调用的脚本。如果以上都没有意义,再次道歉......我对这一切都很陌生:

$(function () {
    $('#wait').hide();
    $('form#leads_form').on('submit', function (e) {
        if (validateFrm()) {
            $(":submit", this).attr("disabled", true);
            $('#wait').show();
            var jqxhr = $.ajax({
                type: 'post',
                timeout: 300000,
                url: 'sell-save-leads.php',
                cache: false,
                data: $('form').serialize(),
                success: function (data) {
                    //alert("Submit success: " + data);
                    window.top.location.href = data;
                }
            });
        } else {
            //alert("validation errors");
            $('#wait').hide();
        }
        e.preventDefault();
    });
});

如果有人能够提供帮助或提供一些建议,那就太好了。

【问题讨论】:

    标签: javascript ajax redirect


    【解决方案1】:

    由于您的表单位于 iFrame 中,我建议您使用此 jQuery 插件将消息从 iframe 发送到其父级: http://benalman.com/projects/jquery-postmessage-plugin/

    有了这个,你可以从你的success函数内部发送一条消息,包含新的url,并在父window中捕获它。

    【讨论】:

    • 您好。感谢您的回复。我确实尝试了我的想法。我使用 window.top.location 的原因是我在 iframe 中有表单,并且通过使用 window.location 重定向停留在 iframe 中,而我需要它打破 iframe 然后重定向(如果这有意义的话)。不过我会再试一次。
    • 你在使用 jQuery 吗?如果是,您可以使用此插件将消息从 iframe 发送到其父级:benalman.com/projects/jquery-postmessage-plugin
    • 您好,我使用的是 jquery 1.9。我会将此插件添加到我的网站吗?
    • 是的,只要包含它之后 jquery
    • 太棒了。我是否需要在提交时调用的 JavaScript 中添加任何内容才能使其正常工作。
    【解决方案2】:

    你也可以使用

     window.top.location.assign(data);
    

    参考:https://developer.mozilla.org/en-US/docs/Web/API/Window.location

    【讨论】:

    • 您好。感谢您的回复。昨天试过了,但没有用 - 同样的问题 - 重定向在较新的设备和桌面上运行良好,但在旧设备上,重定向 url 出现在地址栏中的原始 url 之后
    猜你喜欢
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多