You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery/Ajax页面重定向在iPhone与Safari中无法生效求助

解决Safari中AJAX成功后无法重定向的问题

问题原因

你当前使用$(window).attr('location', json.pageRedirect)实现页面跳转,这种jQuery操作window.location的方式在Safari(包括iOS端Safari)存在兼容性问题,导致跳转失效。

修复方案

1. 改用原生JS跳转方式

替换为所有浏览器都兼容的原生JavaScript跳转写法,推荐两种方式:

setTimeout(function() {
  // 方式1:普通跳转,允许用户回退到登录页
  window.location.href = json.pageRedirect;
  // 方式2:替换当前历史记录,无法回退(更适合登录成功后的场景)
  // window.location.replace(json.pageRedirect);
}, 500);

2. 优化AJAX的JSON解析(可选)

你当前手动调用jQuery.parseJSON(json)解析响应,可通过在AJAX配置中指定dataType: 'json',让jQuery自动完成JSON解析,避免手动解析可能引发的潜在问题:

request = $.ajax({
  url: "user_processing.php",
  type: "post",
  data: serializedData,
  dataType: 'json', // 新增该行,自动解析JSON
  success: function(json) {
    // 无需再手动执行parseJSON
    if (json.success) {
      setTimeout(function() {
        window.location.href = json.pageRedirect;
      }, 500);
    } 
  }
});

完整修改后的JS代码

var request;
$("#login").on('submit', function(e) {
  e.preventDefault();
        
  if (request) {
    request.abort();
  }

  var $form = $(this);
  var $inputs = $form.find("input, select, button, textarea");
  var serializedData = $form.serialize();

  $inputs.prop("disabled", true);
  
  request = $.ajax({
    url: "user_processing.php",
    type: "post",
    data: serializedData,
    dataType: 'json',
    success: function(json) {
      if (json.success) {
        setTimeout(function() {
          window.location.href = json.pageRedirect;
        }, 500);
      } 
    }
  });
  
  request.always(function () {
    $inputs.prop("disabled", false);
  });
});

内容的提问来源于stack exchange,提问作者ugsgknt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 22:20:31