代码之家  ›  专栏  ›  技术社区  ›  IsmailS

使用jQuery在ajax调用中只发送数组中对象的几个属性

  •  0
  • IsmailS  · 技术社区  · 15 年前
    // Initialize the object, before adding data to it.
    var NewPerson = new Object();
    
    NewPerson.FirstName = $("#FirstName").val();
    NewPerson.LastName = $("#LastName").val();
    NewPerson.Address = $("#Address").val();
    NewPerson.City = $("#City").val();
    NewPerson.State = $("#State").val();
    NewPerson.Zip = $("#Zip").val();     
    

    FirstName LastName

    $.ajax({
      type: "POST",
      contentType: "application/json; charset=utf-8",
      url: "PersonService.asmx/AddPerson",
      data: "{'NewPerson':" + JSON.stringify(NewPerson) + "}",
      dataType: "json"
    });
    

    注: 我使用的是一个数组而不是一个 NewPerson . 以上代码只是示例。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Ferdinand Beyer    15 年前

    function extractMembers(arr, members)
    {
        var m, o, i, j;
        var output = [];
        for (i = 0; i < arr.length; ++i) {
            o = {};
            for (j = 0; j < members.length; ++j) {
                m = members[j];
                o[m] = arr[i][m];
            }
            output.push(o);
        }
        return output;
    }
    

    现在可以使用如下函数:

    var objects = [{FirstName: "...", LastName: "...", Address: "..."},
                   {FirstName: "...", LastName: "...", Address: "..."}]
    
    var toSend = extractMembers(objects, ["FirstName", "LastName"]);
    

    还有一件事:您可能希望使用简短的表示法在JavaScript中创建对象:

    var NewPerson = {
        FirstName: $("#FirstName").val(),
        LastName: $("#LastName").val(),
        ...
    };
    
        2
  •  1
  •   jAndy    15 年前

    不幸的是,你不知道 JSON.stringify 对象/数组的哪些属性需要解析,哪些不需要解析。如果你真的需要 NewPerson 对象“手动”时,必须过滤要发送给自己的值。

    .serialize() .serializeArray() input 元素来自 form name= 财产。所以你可以给FirstName和LastName一个name属性。

    参考文献: .serializeArray() .serialize()