Javascript for循环后的代码,Ajax没有执行

时间:2012-09-09 11:36:56

标签: javascript jquery

为什么此代码末尾的“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");
});

2 个答案:

答案 0 :(得分:0)

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]]
];

答案 1 :(得分:0)

问题在于requestObj [“item_id”] = item.toString();

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