繁体   English   中英

如何在javascript中编写一个迭代器来进行简单的AJAX调用?

[英]How to write an iterator in javascript for a simple AJAX call?

我很难过。 我试图通过迭代所有输入并收集它们的val()这是一个字符串来发送一个AJAX调用。

所以我的params希望看起来像这样:

 "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" }
  });
});

如果需要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
    });
});

如何使用serialize()

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

并且你不想在json对象中使用.each 如果需要预处理,请首先使用您认为必要的方法在变量中构建有效负载,然后将该变量传递给.ajax调用。

例如

var value = /*get value array */; ...
var dataToPass = {
  'action' : 'create',
  'value': value,
  'type' : 'zip',
  ...
};
$.ajax({
  ...
  data: dataToPass,
  ...
});

它返回一个对象,因为each JQuery只执行其内容,而不是返回它。 数据键还接受字符串作为值,因此您可以遍历内容,生成类似"action=create&type=zip&..." ,然后将该数组作为数据键的值。

data: { value:  $('.morris input').map( function() {
                    return $(this).val();
                }).get(),
        type: 'zip'
      },

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM