2013-04-29 2 views
0

Я пытаюсь получить группу значений флажка, хранить в массиве, а затем использовать этот массив в моем параметре данных ajax.преобразовать массив значений флажка в список

Я возвращаюсь с моей страницы с сообщением о том, что данные не в правильном формате. Это должно быть ienumerable.

Вот то, что я до сих пор:

var years = new Array(); 
    $("#years input:checkbox[name=type]:checked").each(function() { 
     if (checked == true) { 
      years.push($(this).attr('name') + "=" + $(this).val()); 
     } 
    }); 

    var ajaxData = years; 

    $.ajax({ 
     type: "POST", 
     url: url, 
     dataType: "json", 
     data: ajaxData 
    }); 

Как я могу преобразовать массив в список-подобный формат?

Спасибо!

+1

Что это за переменная 'checked' делает? Кроме того, не должен ли этот оператор всегда возвращать true, поскольку вы только выбираете флажки «checked»? – tymeJV

ответ

1

Как tymeJV упоминалось в комментарии, вам не нужно проверить, если флажок установлен, так как вы уже выбрать те, которые являются проверено, так что просто выполните следующие действия:

var years = new Array(); 
$("#years input:checkbox[name=type]:checked").each(function() { 
    years.push($(this).attr('name') + '=' + $(this).val()); 
}); 

Возможно, вы должны указать вашему массиву имя:

var ajaxData = { 
    years:years 
}; 
$.ajax({ 
     type: "POST", 
     url: url, 
     dataType: "json", 
     data: ajaxData 
    }); 

С вашего сервера вы можете захватить переменную post с именем «years», содержащую массив.

+0

Что лет: годы? Я не совсем так, как работает этот пост. Спасибо – SkyeBoniwell

+1

Атрибут данных jquery ajax должен быть PlainObject или String, а не массивом. Но ваш объект может содержать массив, поэтому в этом случае объект содержит массив, называемый годами –

1

Попробуйте это:

var years = []; 

$("#years input:checkbox[name=type]:checked").each(function() { 
    years.push({ 
     name: $(this).attr('name'), 
     val: $(this).val() 
    }); 
}); 

var ajaxData = years; 
1

Использование JSON:

var years = { 
     theYears: [] 
    }; 

     var years = new Array(); 
     $("#years input:checkbox[name=type]:checked").each(function() { 
      if (checked == true) { 
       theYears.push({ 
        "name" : $(this).attr("name"), 
        "value" : + $(this).val()}); 
      } 
     }); 


    var ajaxData = theYears; 

    $.ajax({ 
     type: "POST", 
     url: url, 
     dataType: "json", 
     data: ajaxData 
    }); 
Смежные вопросы