iOS javascript POST请求奇怪的行为

Posted

技术标签:

【中文标题】iOS javascript POST请求奇怪的行为【英文标题】:iOS javascript POST request weird behaviour 【发布时间】:2018-02-20 15:57:40 【问题描述】:

我正在制作一个 GUI,服务器需要准确了解 UI 所处的状态。因此,我在每个 onclick 和每个 change 上发送一个 POST 请求。我的 UI 在 Linux 和 Windows 上的 Chrome 上表现正确——也就是说,它只向我的烧瓶服务器发送了一堆 POST,它处理数据并返回空白响应 return ('', 204)。并且 UI 仍然保持在同一页面上,因此 ui 仍然可见。但是 ios 上的 Safari 行为不同,当我执行任何触发 POST 更新的操作时,它会发送帖子,然后尝试将浏览器位置移动到 POST URL 的 192.168.1.1/query?arg=value 并尝试呈现空白响应,让我在一个白页。为什么会这样?

function post(path) 
    var form = document.createElement("form");
    form.setAttribute("method", "post");
    form.setAttribute("action", path)
    document.body.appendChild(form);
    form.submit();

还有 javascripttype=text 是一个名为 jQuery Knob 的 jQuery 旋转拨号)

<input type="text" class="dial" value="0" id="myRange"><br /><br />
<button id="myButton" onclick="(function()  post('/query?arg1=1234'); )();">PUSH ME</button>
<script>
    $(".dial").knob(
        'min':0,
        'max':100,
        'fgColor':"#66CC66",
        'angleOffset':-125,
        'angleArc':250,
        'rotation':"clockwise",
        'change': function(v)  post('/slider?value='+Math.round(v)); 
    );
</script>

理想情况下,我希望 iOS 浏览器的行为方式与桌面上的 chrome 相同。感谢您的 cmets 和总体帮助。

【问题讨论】:

IMO IOS 行为是“标准的”,Chrome 正在做一些奇怪的事情。如果您通过 javascript 或纯 html 提交表单,浏览器应加载新页面。如果您想保持在同一页面上,请使用 ajax 将您的数据发送到服务器。 其实很有趣。没有这么想。我的备份选项是 websocket(因为我正在开发一个旨在在本地网络中运行的应用程序,因此我们可以安全地假设途中没有 NAT 或防火墙)。但是 ajax 听起来更有趣。那我试试。谢谢老哥 是的,jQuery.post() - 我相信这是 ajax,解决了它。谢谢你的小费。 【参考方案1】:

我使用 Ajax jQuery.post() 并解决了它。

【讨论】:

以上是关于iOS javascript POST请求奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章

mongodb:获取 API POST 请求返回一个奇怪的响应

在 iOS7 中使用核心数据删除表格视图中的行的奇怪行为

带有字符串正文的 ios HTTP Post

AJAX Post 请求 URL 添加了奇怪的字符

无法使用javascript向ASP.NET web api Controller发送http POST请求

Javascript 的奇怪 RegEx 请求