ugs*_*knt 5 javascript ajax jquery window.location http-redirect
我正在尝试使用将一个页面重定向到另一页面jQuery/ajax。这里我使用php作为服务器端。
这是我向js发送数据的方式:
$url = 'index.php?p=dashboard';
// print the message to Ajax:
$messages = array('success'=>true,'pageRedirect'=>$url);
echo json_encode($messages);
Run Code Online (Sandbox Code Playgroud)
这就是我处理响应的方式AJAX
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,
success: function(json) {
json = jQuery.parseJSON(json)
if (json.success) {
setTimeout(function() {
$(window).attr('location',json.pageRedirect);
}, 500);
}
}
});
request.always(function () {
$inputs.prop("disabled", false);
});
});
Run Code Online (Sandbox Code Playgroud)
我的问题是,以上一切在firefox和中都可以正常工作,但是此重定向在和浏览器chrome中不起作用。希望有人可以帮助我。iphonesafari
在 iPhone 模拟器中测试了以下内容:
window.location.href = "google.com"
Run Code Online (Sandbox Code Playgroud)
它抱怨 URL 格式错误:
跑步
window.location.href = "http://google.com"
Run Code Online (Sandbox Code Playgroud)
作品。
基本上,您需要查看收到的错误,无论是 iPhone 还是 Safari。如果您对此功能仍然存在问题,那么您可能需要编辑您的问题并添加有价值的信息,例如您收到的错误消息。
编辑
我私下与 @ugsgknt 讨论了这个问题,甚至在修复之后,我们也设法使用 iPhone Safari 重现了该问题,并使用服务器端日志记录(通过发布服务器上可能发生的任何错误)来找出问题所在。
事实证明,该表单是由 iPhone Safari 的浏览器发布的,尽管提问者编写的代码非常明确地调用了preventDefault.
我已经为此提出了一个解决方法,据我所知,在撰写本文时它正在实施:
必须查明 iPhone 是否加载了 Javascript,并找出阻止其执行的原因。如果问题在 Macbook 上重现,那么提问者暂时需要一台 Macbook 才能轻松重现并解决问题。如果没有,则需要一个提供控制台输出的合适的 iPhone 模拟器。
像重构 HTML 以不使用form标签并使用其他内容这样简单的方法可能会有所帮助。这至少会阻止浏览器发布。但真正的问题是:为什么 Javascript 没有在移动 Safari 上执行。也许 Javascript 正在那里运行,并且在定义表单发布事件侦听器之前由于某种原因失败。或者,可能甚至没有为此类设备加载该文件。可能有很多可能的原因,提问者需要适当的开发环境才能检测到确切的问题。
| 归档时间: |
|
| 查看次数: |
791 次 |
| 最近记录: |