如何在jquery数据中添加(for循环):

时间:2010-03-12 15:36:48

标签: jquery ajax checkbox loops for-loop

我有这段代码来更新用户数据,但我不能在jquery数据中编写for循环!!

有没有办法修改后面错误的代码才能正确

function DisactiveUser()
{
    var num_checkboxes = document.forms[0].elements.length-1;

    $.ajax({
    type: "POST",
    url:  "submit/php/users.php?do=disactive",
    data: for(i = 1; i <= num_checkboxes; i++)
          {
            "&chk"  + i + "=" + document.getElementById("check" + i).value +
            "&chkc" + i + "=" + document.getElementById("check" + i).checked +
          }
        success: function(html){
        $("#loading").html(html);
    }
    });

}

5 个答案:

答案 0 :(得分:2)

您可以在$.ajax调用之前构建数据字符串,然后提供:

function DisactiveUser()
{
    var num_checkboxes = document.forms[0].elements.length-1;
    var mydata;

    mydata = "";
    for (var i = 1; i <= num_checkboxes; i++)
    {
        mydata +=
            "&chk"  + i + "=" + document.getElementById("check" + i).value +
            "&chkc" + i + "=" + document.getElementById("check" + i).checked;
    }
    mydata = mydata.substring(1);   // Ditch the leading &

    $.ajax({
        type:    "POST",
        url:     "submit/php/users.php?do=disactive",
        data:    mydata
        success: function(html){
            $("#loading").html(html);
        }
    });
}

答案 1 :(得分:1)

您可以使用jQuery $.map函数

data: $.map($('input:checkbox').filter(function() { return /^check\d+/.test(this.id); }), function() {
  var id = this.id.replace(/^[^\d]*(\d+)/, "$1");
  return "chk" + id + "=" + this.value + "&chkc" + id + "=" + this.checked;
}).get().join('&')

或类似的东西。

答案 2 :(得分:0)

您可以将它存储在变量中,如下所示:

function DisactiveUser()
{
    var myData = "";
    $(":checkbox").each(function(i) {
      myData += "&chk"  + i + "=" + $(this).val() + 
                "&chkc" + i + "=" + $(this).is(":checked");            
    });

    $.ajax({
      type: "POST",
      url:  "submit/php/users.php?do=disactive",
      data: myData,
      success: function(html){
        $("#loading").html(html);
      }
    });    
}

但是,除非您需要服务器端的这种特定格式,否则您可能需要查看.serialize() to handle this

在这里,为了让Pointy高兴,这里也是一个阵列路线,这对于大量的复选框来说效果会更好:

var myData = $(':checkbox').map(function() {
  return "chk"  + i + "=" + $(this).val() + 
         "&chkc" + i + "=" + $(this).is(":checked");
}).get().join('&');

答案 3 :(得分:0)

function DisactiveUser()
{
    var num_checkboxes = document.forms[0].elements.length-1;
    var data = '';

    for(i = 1; i <= num_checkboxes; i++)
    {
       data += "&chk" + i + "=" + $("check" + i).val() +
           "&chkc" + i + "=" + $("check" + i)[0].checked;
    }

    $.ajax({
        type: "POST",
        url:  "submit/php/users.php?do=disactive",
        data: data,
        success: function(html){
        $("#loading").html(html);
    }
    });

}

答案 4 :(得分:0)

我经常运行我的jQuery调用:

  

的jQuery( '#时间')。变化(函数(){           jQuery.post('tasks.php?mode = mycompleted',                       {time:jQuery('#time option:selected')。attr('id')},                       function(xml){showTasks(xml); }           );       });

这只是我使用jQuery对PHP脚本进行“Ajax”调用的一个例子。只要#time被更改,它就会将数据发布到tasks.php。函数(xml)段将回调一个javascript函数来处理从脚本中检索到的XML响应。

希望有所帮助。