Laravel在php

时间:2018-03-23 04:40:07

标签: php ajax laravel

我有这段代码select state -> show state cities

<div class="form-group">
  {{ Form::label('state', 'State') }}
  <select name="state" id="state" class="form-control">
  <option value="">{{ __('Select Province') }}</option>
  @foreach ($state->data as $info)
    <option value="{{$info->province_id}}">{{$info->province}}</option>
  @endforeach
  </select>
</div>
<div class="form-group">
  {{ Form::label('city', 'City') }}
  <select class="form-control" name="city" id="city">
    <option value="">{{ __('Select City') }}</option>
  </select>
</div>

和这个javascript:

<!-- find cities -->
<script type="text/javascript">
  $(document).ready(function() {
    $('select[name="state"]').on('change', function() {
      var provinceID = $(this).val();
      if(provinceID) {
      $.ajax({
        url: '{{ url('admin/getcitylistshipping') }}/'+encodeURI(provinceID),
        type: "GET",
        dataType: "json",
        success:function(data) {
        $('select[name="city"]').empty().append("<option value='' selected>Select</option>");
        $.each(data.data, function(key, value) {
            $('select[name="city"]').append('<option value="'+ value['city_name'] +'">'+ value['type'] + ' - ' + value['city_name'] +'</option>');
            });
        }
      });
      }else{
        $('select[name="city"]').empty().append("<option value='' selected>Select</option>");
      }
    });
  });
</script>
  

我想要的是在我的数据库中保存选项文本而不是它们   值(即ID)。

我做了什么

由于我的城市列表由json提供,并且没有任何依赖于他们,我在我的脚本中将我的值从value="'+ value['city_id'] +更改为value="'+ value['city_name'] +,我得到了我的城市名称,而不是他们的ID。

但我的问题在于我的states (provinces)部分,在那部分我需要state id作为值才能返回城市名称,但我不想将该ID保存在我的数据库中,我想要的是保存选项名称。

这是我的商店方法:

$this->validate($request, array(
  'state' => 'nullable',
));

$shipping->state = $request->input('state');
  

如何在我的文件中保存我选择的状态文本而不是他们的ID   控制器?

想法?

1 个答案:

答案 0 :(得分:0)

解决

我在我的刀片上添加了额外的隐藏输入,并将我的脚本更改为:

html

<div name="statehidden" id="statehidden"></div>

script

<script type="text/javascript">
  $(document).ready(function() {
    $('select[name="state"]').on('change', function() {
      var provinceID = $(this).val();
      var statename = $("select[name='state'] option:selected").text();  //add this
      if(provinceID) {
      $.ajax({
        url: '{{ url('admin/getcitylistshipping') }}/'+encodeURI(provinceID),
        type: "GET",
        dataType: "json",
        success:function(data) {
        $('#statehidden').empty();  //add this
        $('#statehidden').append("<input type='text' name='statehidden' id='statehidden' value='"+statename+"'>");  //add this
        $('select[name="city"]').empty().append("<option value='' selected>Select</option>");
        $.each(data.data, function(key, value) {
            $('select[name="city"]').append('<option value="'+ value['city_name'] +'">'+ value['type'] + ' - ' + value['city_name'] +'</option>');
            });
        }
      });
      }else{
        $('#statehidden').empty(); //add this
        $('select[name="city"]').empty().append("<option value='' selected>Select</option>");
      }
    });
  });
</script>