使用 jQuery AJAX 将数据库默认值添加到下拉列表

Posted

技术标签:

【中文标题】使用 jQuery AJAX 将数据库默认值添加到下拉列表【英文标题】:Add database default value to dropdown list using jQuery AJAX 【发布时间】:2018-08-06 17:29:57 【问题描述】:

我正在使用 jQuery AJAX 和 laravel 中的引导模式进行 CRUD 操作。但问题是当我想编辑一些东西时。 AJAX 成功请求后,我无法填充我的下拉列表。如何在我的编辑模式下拉列表中设置数据库默认值?

我的代码:

$(document).ready(function() 
  $('.acedit').click(function() 
    $('#form')[0].reset();
    $('#modal_form').modal('show'); // show bootstrap modal
    var id = $(this).data('id');
    $.ajax(
      url: "route('academic.edit')",
      method: 'post',
      data: 
        id: id,
        '_token': "csrf_token()"
      ,
      success: function(data) 
        //$('#mycontrolId').selectmenu('refresh').val(myvalue).attr("selected", "selected");
        $('.degree').val(data.degree).attr('selected', true);
        $('.divison').val(data.division);
        $('.year').val(data.year);
        console.log(data); //id: 2, user_id: 5, degree: "ssc", division: "First", year: "2009", …
      
    );
  );
);

我的控制器方法:

public function acadedit(Request $request)
    $id=$request->id;
    $info=Academic::find($id);
    return $info;

我的编辑模式下拉列表:

<select class="form-control degree">
    <option value="">-Select Degree-</option>
    <option value="SSC">SSC</option>
    <option value="HSC">HSC</option>
    <option value="BBA">BBA</option>
    <option value="MBA">MBA</option>
</select>

【问题讨论】:

'@Bugfixer' 我已经编辑并添加了 console.log(data) 行。 console.log(data); 是否返回...您可以在浏览器控制台中查看吗...! 不,我想要 console.log 的输出。从成功中删除所有内容并仅写入 console.log(data)。然后检查您的浏览器控制台。你会看到输出。将结果粘贴到此处 尝试使用.attr("selected","selected");.prop('selected', true) id: 2, user_id: 5, degree: "ssc", Division: "First", year: "2009", ...,这是我的控制台结果.我想在我的编辑模式中设置度数。 【参考方案1】:

&lt;select&gt; 元素上没有selected 属性,它仅适用于&lt;option&gt;s。但是,您实际上并不需要它,因为设置 &lt;select&gt; 元素的值足以更改选择。但是您需要将值与正确的字母大小写完全匹配,因此所有大写字母都在您的大小写中。

改变这个:

$('.degree').val(data.degree).attr('selected',true);

收件人:

$('.degree').val(data.degree.toUpperCase());

如果您真的更喜欢使用&lt;option&gt; 上的属性而不是&lt;select&gt;value,那么您需要将&lt;option&gt; 添加到jQuery 选择器中,如下所示:

$('.degree option[value=' + data.degree.toUpperCase() + ']').attr('selected', true);

演示:

$('.degree option[value=SSC]').attr('selected', true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="form-control degree">
  <option value="">-Select Degree-</option>
  <option value="SSC">SSC</option>
  <option value="HSC">HSC</option>
  <option value="BBA">BBA</option>
  <option value="MBA">MBA</option>
</select>

【讨论】:

【参考方案2】:

    如果您想通过 Ajax 使用来自控制器的响应数据,那么最好以 Json 格式返回它: 使用return response()-&gt;json($info); 而不是return $info;

    我可以从您的 console.log 输出中看到您收到 degree: "ssc",而 您的选择选项是SSC,因此您需要在使用前将数据大写:$('.degree').val(data.degree.toUpperCase()); 或将选择选项的值小写:&lt;option value="ss"&gt;SSC&lt;/option&gt;

【讨论】:

以上是关于使用 jQuery AJAX 将数据库默认值添加到下拉列表的主要内容,如果未能解决你的问题,请参考以下文章

jQuery在更改之前获取href初始值一次

如何使用ajax将从jquery for循环创建的输入值发送到php [重复]

将 jQuery 数据表重置为默认值

jQuery post ajax函数[重复]

将chartjs的php sql值检索到jquery/ajax中

jquery - 如何使用通过 AJAX 从 MySQL 和 PHP 检索的数据将图像添加到 Select2 下拉列表?