Как написать итератор в JavaScript для простого вызова AJAX? - PullRequest
0 голосов
/ 25 марта 2011

Я в замешательстве. Я пытаюсь отправить вызов AJAX, перебирая все входы и собирая их val(), который является строкой.

Чтобы мои параметры, надеюсь, выглядели так:

 "action"=>"create",
 "type"=>"zip",
 "value"=> ["12", "13", "14", "14", "15", "16"],
 "controller"=>"admin/distributions",
 "email_id"=>"3"}

Это то, что у меня есть, но оно дает мне [Object object] в качестве значения:

$(".all_of_morris").live("click", function(){
  id = window.location.href.split("/")[5]
  $.ajax({
    type: "POST",
    url: "/admin/emails/" + id + "/distributions",
    dataType: "script",
    data: { $.each($(".morris input"), function(){
      value: $(this).val();
    }),
      type: "zip" }
  });
});

Ответы [ 4 ]

2 голосов
/ 25 марта 2011

Если вам нужен массив для свойства value, вы можете использовать функцию jquery map :

$(".all_of_morris").live("click", function(){
    var data = {};
    data.value = $(".morris input").map(function(){
        return $(this).val();
    }).get();
    data.type = 'zip';
    //..etc
    id = window.location.href.split("/")[5]
    $.ajax({
        type: "POST",
        url: "/admin/emails/" + id + "/distributions",
        dataType: "script",
        data: data
    });
});
0 голосов
/ 25 марта 2011
data: { value:  $('.morris input').map( function() {
                    return $(this).val();
                }).get(),
        type: 'zip'
      },
0 голосов
/ 25 марта 2011

Возвращает объект, потому что each в JQuery просто выполняет его содержимое, а не возвращает его.Ключ данных также принимает строки в качестве значения, чтобы вы могли перебирать содержимое, генерировать что-то вроде "action=create&type=zip&..." и затем указывать этот массив как значение для ключа данных.

0 голосов
/ 25 марта 2011

Как насчет использования serialize()?

$('.morris input').serialize();

И вы не хотите .each внутри объекта json. Если требуется предварительная обработка, сначала создайте полезную нагрузку в переменной, используя те средства, которые вы считаете необходимыми, а затем передайте эту переменную в вызов .ajax.

, например

var value = /*get value array */; ...
var dataToPass = {
  'action' : 'create',
  'value': value,
  'type' : 'zip',
  ...
};
$.ajax({
  ...
  data: dataToPass,
  ...
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...