【问题标题】:HTML Multi-select to Ajax URLHTML 多选到 Ajax URL
【发布时间】:2024-01-15 18:39:01
【问题描述】:

假设我们有一个 HTML 多选。

如何使用多选中的选定值准备 ajax 请求 URL。我正在使用 YUI dataTable,所以我认为我不能使用表单序列化(但即使我可以也不想)? 生成的 URL 应该与带有页面刷新的普通表单提交相同。

我这样做了,但希望 YUI 有更好的方法:

function createURLFromMultiSelect(ob, name) { 
  var url = "";
  for (var i = 0; i < ob.options.length; i++) {
      if (ob.options[ i ].selected) {
          url += "&" + name + "[]=" + ob.options[ i ].value;
    }  
  }
  return url;
} 

【问题讨论】:

    标签: html ajax multi-select


    【解决方案1】:
    name=value1&name=value2&name=value3
    

    【讨论】:

    • 好吧,好吧。这正是我想做的。如何优雅地做到这一点?
    • 顺便说一句,它应该是 eb name[]=value1&name[]=value2&name[]=value3
    • 不,不应该。如果您使用 PHP 并使用 PHP 的内置表单解析库,则名称必须以字符“[]”结尾,但这些字符是名称的一部分,而不是单独的。
    • 是的,好的。取决于输入的名称以及您如何构建 URL。我了解您假设输入名称包含 []。
    • 如果输入名称不包含名称中的 [] 部分(并且您使用 PHP),那么当非 JS 回退命中时它不会起作用。
    【解决方案2】:

    您的选择名称应以 [] 结尾。例如,&lt;select name="items[]"&gt;
    然后在您的 php 代码中,您只需访问 $_POST['items'][$n];count($_POST['items']); 或任何您想对数组执行的操作。

    --戴夫

    【讨论】:

    • 我认为您误解了我的用例。我没有提交 web 1.0 表单,我想有一种方法来手动构造用于发送 ajax 请求的 URL。 (或者你依赖的是表单序列化,我从解决方案中消除了它)。