2017-06-19 26 views
0

我有一个网页,向PHP脚本发出POST请求。根据请求的结果,按钮的onclick事件将重定向到两个页面中的一个。页面无法重定向和清除URL参数

<button id="button" type="submit">Proceed</button> 

... 

$.post('script.php', { 
    key: value 
}, function(result) { 
    if (result != null) { 
    document.getElementById("button").onclick = function() { 
     window.top.location.href = "https://example.com/page?otherkey=othervalue"; 
    } 
    } else { 
    document.getElementById("button").onclick = function() { 
     window.top.location.href = "https://example.com/otherpage?otherkey=othervalue"; 
    }; 
    } 
}); 

这适用于桌面浏览器很好,但在Safari浏览器在iOS(iOS上的10.3.2专门测试)在点击按钮时,页面刷新,并不会重定向到正确的网站。另外,它清除之前存在的任何URL参数。例如,如果带有按钮的页面是example.com/page?key=value,页面将刷新并变为example.com/page?#_=_。我试过调试和检查一个Javascript控制台,但它什么也没说。

重定向是我自己的域中的页面,但带按钮的页面已集成到Facebook应用程序页面中(如果相关)。

另外,如果我自己构建URL并尝试正常访问它,它会正常加载。我不知道是什么原因造成的,所以我不确定是否有其他相关信息值得发布,但如果有必要,我可以说更多。

回答

1

Safari无法很好地处理函数中返回错误,尤其是没有返回。我会在html元素中包含一个onsubmit="return function();",我猜这是一个表单。你也通过$('[the form ID]').submit(function(){ do something here; return false;});

+0

这并不能解决我的问题,但它的确激发了我所想成为的解决方案。我写了另一个答案,但谢谢你的回应! :) – charlieshades

+0

很高兴我启发了一个想法,很抱歉它没有直接解决问题 –

0

将这个附加到submit()事件监听器我是对的,我认为我没有提供足够的细节,但似乎是因为问题中的按钮位于<form>标记内,并充当提交按钮,这是搞砸了。为了解决这个问题,我删除了form(因为我没有在任何地方提交任何数据,只是使用按钮重定向页面),并解决了问题。现在它适用于桌面和移动浏览器。