目前,我的JavaScript代码中存在一个竞争条件。我要用此代码执行的操作是将所有复选框(属于“复选框”类的一部分)转换为未选中的值为零的文本框。当前,当您发布未选中的复选框时,它不会出现在$_POST数据中。但是,我需要知道这些特定复选框的所有值,是true还是false。

我的代码在这里:
码:

function checkboxConvert() {

  var chkBxs = $$('.checkbox');
  for (var i = 0; i < chkBxs.length; i++) {
    if (chkBxs[i].checked == false) {
      chkBxs[i].type = 'textbox';
      chkBxs[i].value = '0';
    }
  }

  setTimeout("document.productForm.submit();",1000);
}


现在,我遇到的问题是,当我尝试提交此表单时,最近更改的文本框的值未出现在$_POST数据中。因此,如您在上面看到的,我将页面提交推迟了1秒钟,然后我可以使用所有数据。但是,随着时间的流逝,我的数据集越来越大,1秒可能不再足够。我认为这是一个竞争条件,只有在所有复选框都已转换并且它们具有新值之后,我才需要找到某种方式运行代码。我本来以为从一开始就没有必要这样做,但是由于某种原因,它试图同时运行这两部分,并且只有在我拥有适当的值之前我才能提交。

任何帮助深表感谢!

最佳答案

这绝对不是做网络的方法。我强烈建议您放弃checkboxConvert函数,并在服务器端解决此问题

10-07 11:58