【问题标题】:AjaxSubmit with window.location on response响应时带有 window.location 的 AjaxSubmit
【发布时间】:2012-10-16 12:20:08
【问题描述】:

我在使用 ajaxSubmit 时遇到问题...问题是,当我提交表单并从 PHP 获得包含 window.location 脚本的响应时,页面不会更改完全...

当表单正确提交时,我的 PHP 脚本只返回一个带有 window.location 的脚本,否则,它返回一个在成功函数上解析的 JSON。

使用 Chrome 的工具,我看到它在网络选项卡上加载了 window.location URL,但是它没有向用户显示它...

这是我的代码:

$("form").submit(function(e) {
    e.preventDefault();
    $("form").ajaxSubmit({
        success: function(resp){
            try{
                resp=JSON.parse(resp);
                alert(resp["error"]);
            } catch(e){
                $("<div></div>").html(resp);
            }

        }
    });
    return false;
});

我需要怎样做才能让它发挥作用? AjaxSubmit 的 options 参数有什么属性可以解决这个问题吗?

【问题讨论】:

  • 能否把resp变量的内容贴出来。
  • resp 变量包含window.location 上指示的 URL 的代码
  • 好的,那么如何执行该代码?此刻你只是在解析它。
  • 但问题是我想解析包含 window.location 的代码以执行它并更改浏览器的当前 url。发生的事情是 resp 获取重定向页面的代码,而不是 window.location 的代码。

标签: javascript jquery ajax redirect window.location


【解决方案1】:

只需在您的服务器答案中提供不带 JS 代码的 URL,然后执行:

$("form").submit(function(e) {
    e.preventDefault();
    $("form").ajaxSubmit({
        success: function(resp){
            try{
                resp=JSON.parse(resp);
                window.location.href = resp;
            } catch(e){
                $("<div></div>").html(resp);
            }

        }
    });
    return false;
});

【讨论】:

  • 所以我应该摆脱在 PHP 端使用 window.location 而不是它,我应该发送一个带有 URL 的 json 来解析成功函数?难道没有办法在提交的 URL 上存在的脚本执行之前调用成功吗?
  • 没办法,提交的URL总会在调用成功回调之前执行
  • 甚至里面的脚本?
  • 当然,AJAX url是完整执行的,如果HTTP返回码为200,则调用成功回调else error
  • 但是如果我使用$.ajax而不是$("form").ajaxSubmit(),它就可以工作...问题是我不能使用$.ajax,因为我在表单中有文件元素...跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-05
  • 1970-01-01
  • 1970-01-01
  • 2013-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多