未执行Ajax循环的Javascript之后的代码

Code after Javascript for loop with Ajax not executing

本文关键字:Javascript 代码 之后 循环 执行 Ajax      更新时间:2023-09-26

为什么此代码末尾的"hello"警报没有执行?其他一切都很好,但警报没有响起。我错过了什么?PS,当谈到Javascript时,我是一个初学者。。。

$('.save_button').click(function(){
  var numItems = dataseries.length;
  var item;
  var sequence;
  var question = <%=@question.id%>;
  for (i=0;i<numItems;i++){
    var requestObj = {
      question_id: "<%=@question.id%>",
      user_id: "1",
    }
    item = $('.item_list li[data-seq='+i+']').attr('id');
    requestObj["item_id"] = item.toString();
    requestObj["x"]= dataseries[i][0][0];
    requestObj["y"]= dataseries[i][0][1];
    if (requestObj["item_id"]!="null"){
      var a = $.ajax({
        url: "<%=responses_path%>",
        data: requestObj,
        type: "POST",
        dataType: 'script',
        success: function(data, textStatus, jqXHR) {
        },
        error: function(jqXHR, textStatus, errorThrown) {
          alert('error!');
        },
        headers: {
          'X-CSRF-Token': '<%= form_authenticity_token.to_s %>'
        }
      });
    }
  }
  alert("hello");
});

var question = <%=@question.id%>;应该是var question = "<%=@question.id%>";(字符串)。

我用以下附加代码进行了尝试,结果很好:

<!-- HTML -->
<input type="button" class="save_button" value="Save" />
<ul class="item_list">
    <li id="item1" data-seq="0">item1</li>
    <li id="item2" data-seq="1">item2</li>
    <li id="item3" data-seq="2">item3</li>
</ul>​

// JS:
var dataseries = [
    [[1 /* x */, 2 /* y */]],
    [[2, 3]],
    [[3, 4]]
];

问题出在requestObj["item_id"]=item.toString();

在某些情况下,这是null,并且退出时出现错误。感谢所有回应的人。