代码之家  ›  专栏  ›  技术社区  ›  Jay Corbett

使用jQuery,如何模拟select的表单序列化,并在$.ajax调用中选择多个选项?

  •  5
  • Jay Corbett  · 技术社区  · 17 年前

    $.ajax({
        type: "post",
        url: "http://myServer" ,
        dataType: "text",
        data: {
            'service' : 'myService',
            'program' : 'myProgram',
            'start' : start,
            'end' : end ,
            },
        success: function(request) {
          result.innerHTML = request ;
        }   // End success
      }); // End ajax method
    

    编辑 我应该包括我了解如何使用以下代码循环选择所选选项:

    $('#userid option').each(function(i) {
     if (this.selected == true) {
    

    但我如何将其纳入我的数据:部分?

    3 回复  |  直到 17 年前
        1
  •  5
  •   Owen Ryan Doherty    17 年前

    使用数组怎么样?

    data: {
        ...
        'select' : ['value1', 'value2', 'value3'],
        ...
    },
    

    编辑

    'select' : $('#myselectbox').serializeArray(),
    

    但是,为了使serializeArray()工作,所有表单元素都必须具有name属性。价值 'select'

    'select' : [
        { 'name' : 'box', 'value' : 1 },
        { 'name' : 'box', 'value' : 2 }
    ],
    

    生成上述结果的选择框为:

    <select multiple="true" name="box" id="myselectbox">
       <option value="1" name="option1" selected="selected">One</option>
       <option value="2" name="option2" selected="selected">Two</option>
       <option value="3" name="option3">Three</option>
    </select>
    
        2
  •  4
  •   Jay Corbett    17 年前

    多亏了@Owen的回答,我才有了这个代码。

    对于id为“mySelect”multiple=“true”的选择框

        var mySelections = [];
        $('#mySelect option').each(function(i) {
            if (this.selected == true) {
                mySelections.push(this.value);
            }
        });
    
    
        $.ajax({
          type: "post",
          url: "http://myServer" ,
          dataType: "text",
          data: {
            'service' : 'myService',
            'program' : 'myProgram',
            'selected' : mySelections
            },
          success: function(request) {
            result.innerHTML = request ;
          }
        }); // End ajax method
    
        3
  •  2
  •   EmanueleDG    16 年前

    表示所选多个选项集合的正确方法是使用 大堆
    问题是jQuery方法serialize()没有正确处理它。

    <select name="a[]">
        <option value="five">5</option>
        <option value="six">6</option>
        <option value="seven">7</option>
    </select>
    

    序列化发送此数组:a[]=0&a[]=1&a[]=2 PHP通过以下方式接收:

    [a] => Array
        (
            [0] => 0
            [1] => 1
            [2] => 2
        )
    

    真正的价值丢失的地方。