Jquery Ajax html(多选)

Posted

技术标签:

【中文标题】Jquery Ajax html(多选)【英文标题】:Jquery Ajax html (Select multiple) 【发布时间】:2020-11-28 01:11:45 【问题描述】:

我正在寻找一些简单的东西。我必须通过 jquery 将值从表单 html 传递到文件 php。我尝试此代码,结果为零。如果有人能说我哪里错了。谢谢

对于 JQUERY

$('#Save').click(function()

    var realvalues = new Array();//storing the selected values inside an array
    $('#Privilege[] :selected').each(function(i, selected) 
        realvalues[i] = $(selected).val();
    );

    $.ajax(
        type: "POST",
        url: "test5.php",
        data: "Privilege[]": realvalues,
        success:function(data)
                $("#subscrres").html(data)
            
    );
);

对于 HTML

<form method="post">
<select id="Privilege[]" multiple>
<option value="yahoo">yahoo</option>
<option value="chrome">chrome</option>
<option value="mozilla">mozilla</option>
</select>
<input type="button" id="Save" Value="SEND"/>

对于 PHP。内容文件test5.php

if(isset($_POST['Privilege']))
$myvar  =$_POST['Privilege'];
foreach($_POST['Privilege'] as $one)
echo $one."<br/>";


我没有收到关于 PHP 的任何信息。有人可以帮助我吗?

【问题讨论】:

在您的 PHP 顶部添加 var_dump($_POST) 并查看您收到的内容。 您正在发送"Privilege[]",但您正在检查isset($_POST['Privilege']) 好的,谢谢 Jaj,我同意你的看法,但我还没有解决,当然我还有更多问题......我想。 该帖子缺少&lt;/form&gt;,但您可能忽略了它。尝试将“名称”属性添加到&lt;select&gt; 感谢您的帮助 Funk 四十九,我已将名称添加到选择器中,表格的结尾已经存在,但没有任何改变....将成为真正的反击 :) 【参考方案1】:

如果您尝试使用 id 访问多选元素,则不需要像 Privilege[] 那样设置 id,您可以设置像 privilege-selector 这样的任何唯一标识,但如果您要为任何多选元素命名,那么名字必须像Privilege[]

这里是html:

<form id="form" method="post">
    <select id="privilege-selector" multiple>
       <option value="yahoo">yahoo</option>
       <option value="chrome">chrome</option>
       <option value="mozilla">mozilla</option>
    </select>
    <input type="button" id="Save" Value="SEND"/>
</form>

请检查下面的ajax 请求以将选定的数据发布到服务器

$("#Save").on("click",function()
    var selection = [];
    $.each($("#privilege-selector option:selected"),function(index,element)
        selection.push($(element).val());
    )
    $.ajax(
        url : "test5.php",
        type : "POST",
        data : Privilege:selection,
        success : function(_response)
           var res = JSON.parse(_response);
           if(res.code == "1")
             console.log(res.data);
            else 
             alert(res.message);
            
        
    )
);

这是处理传入请求数据的服务器文件

$serverResponse = [];
if(isset($_POST['Privilege']) && !empty($_POST['Privilege']))
    $formattedData = [];
    foreach($_POST['Privilege'] as $key => $value)
        $formattedData[] = array(
            "id" => $key+1,
            "name" => $value
        );
    
    $serverResponse = ["code"=>"1","message"=>"formatted data","data"=>$formattedData];
 else 
    $serverResponse = ["code"=>"0","message"=>"Please select at least on value"];

echo json_encode($serverResponse);

【讨论】:

我将id="#form" 更改为id="form"# 不应该在那里。这是我编辑的一个明显的错字。 是的,# 不应该在那里,对不起,谢谢@FunkFortyNiner 显然感谢您的帮助。但我仍然有问题。我也编辑了 test5.php 并回显了建议的新代码,但似乎从 test3.php 我没有达到 test5.php ......最后我也可以在没有旧系统的 jquery 的情况下做到这一点html + php...无论如何感谢您的帮助! 嘿伙计,我已经解决了,你的代码很完美,问题是我写了 http 而不是 hpps 来访问 Jquery 库,所以 Chrome 阻止了我的请求。我已经在 https 上进行了编辑,现在一切正常。非常感谢所有人!!! @Fabriziosimi 我仍在关注这个问题并注意到您在上面的评论。您知道,如果您想避免脚本、图像等中 HTTP 和 HTTPS 之间的问题,您可以使用//script.xx 方法,而不是使用http://https:// 对其进行硬编码。这样一旦上线,它将自动解析到文件所在的当前 URL。

以上是关于Jquery Ajax html(多选)的主要内容,如果未能解决你的问题,请参考以下文章

基于php(Thinkphp)+jquery 实现ajax多选,反选,不选 删除数据 新手学习向

jQuery的AJax异步訪问

用jquery实现可输入多选下拉组合框

使用ajax jquery php基于多选选项过滤数据

jQuery初识

jQuery安装和语法