【问题标题】:jQuery .post not always runningjQuery .post 并不总是运行
【发布时间】:2013-04-03 02:38:21
【问题描述】:

我正在创建一个允许用户从任意数量的答案中选择一个的网站。最终,我已经完成了所有工作。系统工作,但如果用户在页面上超过 30 秒,提交似乎不起作用。网站上没有应该导致此问题的超时设置,而且我似乎无法在 jQuery .post 中找到会导致此问题的原因。这是我正在使用的代码:

function submitAns(str, num) {
    var radios = document.getElementsByName(str);
    for (var i = 0, length = radios.length; i < length; i++) {
        if (radios[i].checked) {
            $.post('saveAnswer.aspx', {
                'answer': String(radios[i].value),
                'question': num,
                'comment': String($("#comment").val())
            }, function (msg) {
                if (msg == "failed") {
                    jAlert('Error Saving Data.');
                } else {
                    window.location = "Voting-Page";
                }
            });
        }
    }
}

这是在用户单击类似于此的表单的按钮后触发的:

<input type='radio' name='group0' value='Yes'>Yes
<input type='radio' name='group0' value='No'>No
<textarea id='comment' rows='7' cols='40'></textarea>
<input type="submit" name="submitbtn" value="Submit" onclick="submitAns('group0','0');" class="btnSubmit" />

如果我在 30 秒的时间范围内提交表单,它会顺利通过。否则,页面会重新加载并且不会提交表单。我尝试通过添加'timeout': 300000 为.post 添加一个大超时,但这仍然不起作用。我还尝试删除 jAlert 并检查是否有任何站点错误(未找到)。这可能是什么问题?

【问题讨论】:

  • 你检查过你的 JS 控制台是否有错误吗?
  • 页面中有没有表单
  • 用什么浏览器测试

标签: jquery timeout .post


【解决方案1】:

我可以看到您的页面中有一个submit 按钮,提交按钮的默认操作是提交表单,为了防止它您可以从onclick 事件处理程序返回false

但令我困惑的是,在这种情况下它必须保持一致,30 秒部分在这里没有任何效果。

任何方式尝试将提交按钮中的onclick处理程序更改为

<input type="submit" name="submitbtn" value="Submit" onclick="submitAns('group0','0'); return false;" class="btnSubmit" />

【讨论】:

  • 做到了!谢谢你的帮助。
猜你喜欢
  • 1970-01-01
  • 2014-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多