Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用json将所选multiselect选项值设置为所选_Php_Jquery_Json_Multi Select_Jquery Chosen - Fatal编程技术网

Php 使用json将所选multiselect选项值设置为所选

Php 使用json将所选multiselect选项值设置为所选,php,jquery,json,multi-select,jquery-chosen,Php,Jquery,Json,Multi Select,Jquery Chosen,我花了将近两天的时间寻找问题的解决方案,但没有找到任何答案。可能是我最近开始学习Ajax和jquery的东西,我错过了一些东西 注意:我的所有选择框都是选中的多个选择框&所有选项都是硬编码的 我有多个文本和选择框,我想在其中显示/选择来自mysqli json输出的数据,这是一个选择框更改事件之一(基本上,使用此用户可以复制/编辑所有文本和选择框的数据库中保存的现有详细信息) 我已经能够成功地使用下面的js代码为文本框执行此操作,我在过去两天学习了这些代码,以完成我的任务 $(document)

我花了将近两天的时间寻找问题的解决方案,但没有找到任何答案。可能是我最近开始学习Ajax和jquery的东西,我错过了一些东西

注意:我的所有选择框都是选中的多个选择框&所有选项都是硬编码的

我有多个文本和选择框,我想在其中显示/选择来自mysqli json输出的数据,这是一个选择框更改事件之一(基本上,使用此用户可以复制/编辑所有文本和选择框的数据库中保存的现有详细信息)

我已经能够成功地使用下面的js代码为文本框执行此操作,我在过去两天学习了这些代码,以完成我的任务

$(document).ready(function () 
{
   $('#posted_jobs').on('change', function () 
   {
      var selectedValue = $(this).val();    
      $.ajax
      ({
          url: 'Copyvalue.php',
          type: 'POST',
          data: 'filter_job_id=' + selectedValue,
          success: function(response) 
          {
            var obj = $.parseJSON(response);//parse JSON            
            console.log(response);
            //alert(JSON.stringify(obj));       
            $("#Job_Type").val(["Normal"]); // have tried manually adding value to selectbox here but not working
            $('#Locations').val(obj[0].Job_type); // have tried manually adding value to selectbox here but not working
            $('#Job_Type').val(obj[0].Job_type);
            $('#Keywords').val(obj[0].Keywords);
            $('#designation').val(obj[0].Designation);
            $('#Company_name').val(obj[0].Company_Name);
            $('#Contact_Person').val(obj[0].Contact_person_name);
            $('#Contact_person_no').val(obj[0].Contact_No);
            $('#Job_name').val(obj[0].Job_name);
           }
        });         
     });
  });
我尝试了n个来自堆栈溢出和其他web建议的选项。但无法使其在选择框中工作。请帮助我得到这项工作,如果可能的话,请告诉我从哪里可以学到这一点的好来源

我尝试过这样的选择

$("#Locations").val(["1, 2, 3, 4"]).prop("selected", false);
$("#Locations").val([1, 2]);
我的PHP脚本在Chrome控制台中的Json输出

 [{"Job_id":"6","Employer_id":"2","creation_on":"2015-01-03 18:48:58","Keywords":"operation executive, manager operation, operation manager, executive operation","Job_type":"Normal","Designation":"Assistant Manager - Operation","Open_Positions":"4","Job_Description":"<p><strong>Good<\/strong> <em>Position<\/em><\/p>","Min_age":"23","Max_age":"34","Min_exp":"5","Max_exp":"12","Min_salary":"104","Max_salary":"109","Hide_Salary":"","Locations":"3, 4, 8, 45, 46","Industry":"10002, 10004","FA":"1002, 1003","Education":"4, 6, 9","Company_Name":"Aviva Life Insurance Company India Limited","About_Company":"<p><strong>Good<\/strong><em> Company<\/em><\/p>","Contact_person_name":"Balvinder Rayat","Contact_No":"9818906677","Refresh_type":"15","Response_type":"VC","Job_name":"Operation AM","Job_status":"Active"}]
[{“职务id”:“6”、“雇主id”:“2”、“创建日期”:“2015-01-03 18:48:58”、“关键词”:“运营主管、运营经理、运营经理、执行运营”、“职务类型”:“正常”、“指定”:“运营助理经理”、“空缺职位”:“4”、“职务描述”:“良好职位”、“最低年龄”:“23”、“最高年龄”:“34”、“最低经验”:“5”,“最高经验”:“12”,“最低工资”:“104”,“最高工资”:“109”,“隐藏工资”:“地点”:“3、4、8、45、46”,“行业”:“10002、10004”,“FA”:“1002、1003”,“教育”:“4、6、9”,“公司名称”:“英杰华人寿保险印度有限公司”,“关于公司”:“好公司”,“联系人姓名”:“Balvinder Rayat”,“联系人编号”:“9818906677”,“更新类型”:“响应类型”:“VC”,“作业名称”:“操作AM”,“作业状态”:“活动”}]
我的选择框

<select id="Locations" name='Locations[]' style='width:100%;' data-placeholder='Type or select   
locations' multiple class='chosen-select-no-results'>
    <option value="1">Bangalore</option>
    <option value="2">Chennai</option>
    <option value="3">Delhi</option>
    <option value="4">Gurgaon</option>
    <option value="5">Hyderabad</option>
    <option value="6">Kolkata</option>
    <option value="7">Mumbai / Navi Mumbai</option>
</select>                      

班加罗尔
钦奈
德里
古尔冈
海得拉巴
加尔各答
孟买/纳维孟买
我写了一个简单的例子

而不是那部分

if($(this).val() == 1)
{
    $(this).prop('selected', true);
}
if($(this).val() == 2)
{
    $(this).prop('selected', true);
}

检查数组中的值是..还是以何种类型存储数据。

我搜索了更多信息,并获得了专门为(选择框)设置选择框值的解决方案(我猜)

基本上,代码中缺少触发器,这导致了所有问题。在使用json检索的最后一个值中添加触发器后,所有问题都得到了解决

$("#Job_Type").val(obj[0].Job_type).trigger('chosen:updated');
希望它也能帮助其他人

从这个链接找到答案

此外,对于多个选择框,如果您的值类似于[1,2,3,4],则可以使用以下方法获得结果:

var values = obj[0].Locations;
$.each(values.split(','), function(index, element)
{
   $('#Locations').find('option[value="'+ element +'"]').attr('Selected', 'Selected');
   $("#Locations").trigger('chosen:updated');   
});
这会奏效的

$.each(objlist, function (index, value) {                                  
  $(".chosen-select option[value=" + value.id+ "]").attr("selected", "selected");
  $(".chosen-select").trigger("chosen:updated");                             
});

在使用jQuery selected插件填充
并将一些选项设置为默认选中时,我也遇到了类似的问题。 我在代码中使用的方法是

  • 从ajax调用获取JSON响应
  • 使用JSON填充
    元素
  • 遍历
    元素
  • 使用“选定”属性更新它们(对于特定选项)
我使用的代码片段如下

目前,该国政府救援人员<代码>var-应答方<<代码>var-应答应答方<<<码码>var-应答方<<码码>var-应答方<<<码码>反应方方<<<码号::“{{”id\\\\\\\\\\\\\\\\\\\\\\\\\\\”,,“位置”id\\\\\\\\\\\\\\\\\\\””,,,“地址\\\\\\\\\\\\\\\\\\\\\金属金属倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒倒“Cochin\”},{\“id\”:“8\”,“location\”:“Trivandrum\”}]; /*用位置列表填充*/ var locationList=JSON.parse(响应); $.each(位置列表,函数(){ $(“#位置选择”)。附加($(“”) .val(this.id).text(this.location)); }); $(“#位置选择”)。已选择({ 无结果文本:“哦,找不到位置!”, 显示所选选项:false }); /*默认情况下,从列表中选择一些位置*/ var selectedLoc=JSON.parse(“[{“id\”:“2\”,“location\”:“Bangalore\”},{“id\”:“6\”,“location\”:“Mumbai\”},{“id\”:“7\”,“location\”:“Cochin\”); /* *创建一个位置数组,它也可以是id数组,然后 *if条件应该是 *if($.inArray($(this.val(),users)!=-1){…} *这是因为id被填充为 * *来自json的位置 * */ var位置=[]; $.each(selectedLoc,function(){ 位置。推(此位置); }); $(“#位置选择选项”)。每个(函数(){ if($.inArray($(this.text(),位置)!=-1){ $(this.attr('selected','selected'); $(“#位置选择”).trigger('selected:updated'); 返回; } });

默认情况下,jQuery selected multiselect具有选定值

已经检查了数组中的数据类型和值。两者都是正确的。数据类型-Varchar和值也可以在Json输出中查看位置。此外,我尝试手动选择值(我在选择框详细信息中提到)但即使在使用您的问题解决方案之后,它们也不会被选中。我见过许多类似于您共享的JSFIDLE,其中选项显示已选中,但我的me无法使用。不知道为什么。我在这里实现了您的代码“success:function(response){var obj=$.parseJSON(response);//parse JSON console.log(response);//警报(JSON.stringify(obj));$(“#位置”).find(“选项”).each(函数(){if($(this.val()==1){$(this.prop('selected',true);}if($(this.val()==2){$(this.prop('selected',true)});“但是它不起作用&没有显示为selectedWesome,如果这是有效的解决方案,但可能需要一点描述来配合它:)你可以用attrabute Ex:Script:var listSelected=$('#donvicbb').attr('selected-value');$('#donvicbb').val(listSelected.split(','))绑定所选值;//设置值为数组$('#donvicbb')。触发器(“selected:updated”);//是必需的。