javascript - Laravel 7:如何在依赖下拉列表中获取名称而不是 id?
问题描述
我有一个从属下拉列表,它通过比较 ID 来获取值,这里的问题是当我尝试保存表单值时,我得到的是 ID 而不是选择字段的名称。谁能告诉我如何获得 NAME 而不是 ID。
我使用 javascript 的刀片视图:index.blade.php`
<div class="container">
<h2>Region</h2><br>
<form action="details" method="POST">
{{ csrf_field() }}
<div class="form-group">
<label for="title">Select Country:</label>
<select id="country" name="country" class="form-control" style="width:350px" required>
<option value="" selected disabled>Select</option>
@foreach($countries as $key => $country)
<option value="{{$key}}">{{$country}}</option>
@endforeach
</select>
</div>
<div class="form-group">
<label for="title">Select State:</label>
<select name="state" id="state" class="form-control" style="width:350px" required>
</select>
</div>
<div class="form-group">
<label for="title">Select City:</label>
<select name="city" id="city" class="form-control" style="width:350px" required>
</select>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
<script type="text/javascript">
$('#country').change(function() {
var countryID = $(this).val();
if (countryID) {
$.ajax({
type: "GET",
url: "{{url('get-state-list')}}?country_id=" + countryID,
success: function(res) {
if (res) {
$("#state").empty();
$("#state").append('<option value="">Select</option>');
$.each(res, function(key, value) {
$("#state").append('<option value="' + key + '">' + value + '</option>');
});
} else {
$("#state").empty();
}
}
});
} else {
$("#state").empty();
$("#city").empty();
}
});
$('#state').change(function() {
var stateID = $(this).val();
if (stateID) {
$.ajax({
type: "GET",
url: "{{url('get-city-list')}}?state_id=" + stateID,
success: function(res) {
if (res) {
$("#city").empty();
$("#city").append('<option value="">Select</option>');
$.each(res, function(key, value) {
$("#city").append('<option value="' + key + '">' + value + '</option>');
});
} else {
$("#city").empty();
}
}
});
} else {
$("#city").empty();
}
});
</script>
我的下拉控制器:DropdownController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class DropdownController extends Controller
{
public function index()
{
$countries = DB::table("countries")->pluck("name", "id");
return view('index', compact('countries'));
}
public function getStateList(Request $request)
{
$states = DB::table("states")
->where("country_id", $request->country_id)
->pluck("name", "id");
return response()->json($states);
}
public function getCityList(Request $request)
{
$cities = DB::table("cities")
->where("state_id", $request->state_id)
->pluck("name", "id");
return response()->json($cities);
}
public function show(Request $request)
{
dd(request()->all());
}
}
数据转储后我得到的有效负载是 ID:
array:4 [▼
"_token" => "xxxxxxxxxxxxxxxxxxxxxxxxx"
"country" => "1"
"state" => "5"
"city" => "124"
]
我想要的是获得名称:
array:4 [▼
"_token" => "xxxxxxxxxxxxxxxxxxxxxxxxx"
"country" => "country_name"
"state" => "state_name"
"city" => "city_name"
]
解决方案
您应该将选择的名称从更改name
为name[]
推荐阅读
- python - 如何在以下数据框的列之间进行迭代?
- typescript - 接口的扩展类型和交集类型是否相等?
- r - 删除 ggplot 中的一些图例条目
- python - 什么是 python ray 语法将导入的函数用作带有装饰器 arg 的射线远程函数,例如 num_cpus
- c# - 控制器接受不同的模型
- google-bigquery - 来自 Cloud Logging 接收器的重复 BigQuery 行
- javascript - 即使状态没有改变,为什么 setState 会导致太多的重新渲染错误
- vue.js - 翻译默认消息 v-autocomplete 中没有可用数据
- numpy - numpy数组的数组加起来另一个数组
- javascript - 如何在没有 setTimeout 的情况下延迟调用功能?角