簡體   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