Как добавить (для цикла) внутри данных JQuery: - PullRequest
1 голос
/ 12 марта 2010

У меня есть этот код для обновления данных пользователей, но я не могу написать цикл for внутри данных jquery !!

Есть ли способ изменить неверный код, чтобы он был правильным

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 ]

2 голосов
/ 12 марта 2010

Вы можете построить строку данных до вызова $.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 голос
/ 12 марта 2010

Вы можете использовать функцию 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('&')

или что-то в этом роде.

0 голосов
/ 12 марта 2010

Я обычно запускаю свои вызовы jQuery так:

JQuery ( '# время'). Изменить (функцию () { jQuery.post ('tasks.php? mode = mycompleted', {time: jQuery ('# time option: selected'). attr ('id')}, function (xml) {showTasks (xml); } ); });

Это просто пример случая, когда я использую jQuery для вызова Ajax-скрипта PHP. Каждый раз, когда #time изменяется, он отправляет данные в tasks.php. Сегмент функции (xml) вызывает функцию javascript для обработки XML-ответа, полученного из сценария.

Надеюсь, это поможет.

0 голосов
/ 12 марта 2010
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);
    }
    });

}
0 голосов
/ 12 марта 2010

Вы можете сохранить его в переменной, как показано ниже:

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(), чтобы обработать этот .

Здесь, чтобы осчастливить Пойнти, вот и маршрут массива, он будет работать лучше при большом количестве флажков:

var myData = $(':checkbox').map(function() {
  return "chk"  + i + "=" + $(this).val() + 
         "&chkc" + i + "=" + $(this).is(":checked");
}).get().join('&');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...