【问题标题】:Sending Multiple select to server向服务器发送多选
【发布时间】:2015-12-16 12:14:43
【问题描述】:

我正在使用具有多个选择的表单(使用 Select2)并使用 HTML5 的 Formdata 对象将数据提交到服务器。它在我发送文本或文件时效果很好,但在这种情况下不起作用。

我已根据需要将 name 属性指定为 lbl[] 并指定了 multiple="multiple"。

Formdata 是否支持多选或者我缺少什么?

我的选择:

<select class="form-control theread_p_ip" name="thread_p[]" multiple="multiple" style="width: 100%"></select>

我使用Formdata的方式:

 form_data = new FormData($(mydata.sform)[0]);
 ajaxoptions.data=form_data;

ajaxoptions 是我传递给 JQuery AJAX 的对象,$(mydata.sform)[0] 选择我的表单

我已经使用print_r($_POST,true) 进行了检查,我得到了这个:

Array
(
[thread_p] => 
[thread_lbl] => giggg
[ddemand] => json
[dtype] => json
[eltarget] => -1
[sform] => #ta-tbxnewthread
[mkey] => tbx_newthread
)

你可以看到thread_p是空的。如果我指定 name="thread_p" 而不是使用 [] 我会单独获得最后选择的值。

PS:忽略数组中的其他值。这些是我从客户端发送的其他参数。

如果您想知道 select 中没有选项,它们是由 select2 通过 AJAX 加载的,它工作正常。

更新: 使用黑客的小提琴解决:https://jsfiddle.net/95khdzp2/1/

在服务器端,你会得到用“,”分隔的值,如果你使用 PHP,你必须使用 explode(',', $variable); 来分隔

【问题讨论】:

  • ajaxoptions.data.mySelect2=$(".theread_p_ip").val(); ??
  • 不。 select2 只是我正在使用的一个插件。 select2.github.io没有变量data.mySelect2
  • 你试过了吗..或者你已经解决了??
  • 我试过了。它不起作用。
  • 也许你做错了:jsfiddle.net/95khdzp2/1 ...只需检查控制台

标签: javascript php jquery ajax


【解决方案1】:

你可以遵循这个逻辑:

var ajaxOptions = {};
ajaxOptions.data = {};
$(function(){
  $(".theread_p_ip").select2();

  $(".theread_p_ip").change(function(){
    ajaxOptions.data.mySelect2 = $(this).val();
    console.log(ajaxOptions);
  });
});

这样,您的ajaxOptions Object 可以根据select2 的更改更新他的值。

【讨论】:

    【解决方案2】:

    根据 select2 文档,您不需要给出名称数组,只需给出名称,此处为 name="thread_p"

    根据文档,提供了一个示例,

    $(".js-example-basic-multiple").select2();
    
    <select class="js-example-basic-multiple" multiple="multiple">
      <option value="AL">Alabama</option>
        ...
      <option value="WY">Wyoming</option>
    </select>
    

    请参考https://select2.github.io/examples.html

    【讨论】:

    • 如果我不给出 [] 符号,则只发送一个值(指定问题)。我测试过了。
    • 您尝试使用 $('.theread_p_ip').val() 获取 select2 的倍数。你会得到价值。我在示例中尝试过
    • 是的。这将给出值,但如果您需要在服务器上获取它,则需要使用 [] 表示法。但是,如果您继续将客户端的所有值 onchange 存储在一个变量中,那么您可以将变量发送到服务器,而不必担心 [] 符号。无论如何,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2015-09-29
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    相关资源
    最近更新 更多