我从控制器获取json数据并在下拉选择框中显示。但是当我在json中获取空值时,我想显示文本框而不是下拉列表。手动填写数据。
public function getyear(Request $request){
$appraisals=new Appraisals();
$serial=$_GET['ser'];
$brand=$_GET['brand'];
$year_array='';
$serial_number=$appraisals->get_years($brand,$serial);
if(isset($serial_number)):
foreach($serial_number as $years):
$yrs=$years->year_start;
$yre=$years->year_end;
endforeach;
endif;
if(!empty($serial_number)){
if($yrs!="" && $yre!=""){
for($i=$yrs;$i<=$yre;$i++):
$year_array.="<option value='".$i."'>".$i."</option>";
endfor;
}
}
else
{
//for($i=1840;$i<1940;$i++):
$year_array.="<input type='text' value=''>";
//endfor;
}
return response()->json(['success' => true,'years_array'=>$year_array]);
exit;
}
java脚本函数:
$('#serial').blur(function() {
var ser=$(this).val();
var brand=$('#brand').val();
brand = brand.split('%') ;
$.getJSON("{!! URL::route('appraisal.getyear') !!}", {brand: brand[0],ser:ser}, function(data) {
if(data.success)
{
$('#year').html(data.years_array);
}
});
});
查看文件:
<div class="form-group">
<label>Serial number</label>
{{Form::text('serial_number', null, ['placeholder' => 'Enter serial no','class'=>'form-control','id'=>'serial'])}}
</div>
<div class="form-group" id="yeartext">
<label>Select Year</label>
<span class="years"></span>
@if($years=="")
{{Form::text('year', null, ['placeholder' => 'Enter Year no','class'=>'form-control','id'=>'year'])}}
@else
{{Form::select('year',$years, null, ['placeholder' => 'Pick a year','class'=>'form-control','id'=>'year'])}}
@endif
</div>
如何显示文本框而不是选择框我没有得到任何教程,所以任何帮助都会被大大加工。
答案 0 :(得分:2)
我对你的问题有一个解决方案
首先重新创造整体 GetJson请求中控制器中的元素 还有一件事你需要在$ .getJSON上使用$ .get方法
regno = s_no + i;
在'yeartext'div
上添加html$year_array='';
$year_array.="<label>Select Year</label>";
$year_array.="<span class='years'></span>";
if(!empty($serial_number)){
if($yrs!="" && $yre!=""){
$year_array.="<select name='year'>";
for($i=$yrs;$i<=$yre;$i++):
$year_array.="<option value='".$i."'>".$i."</option>";
endfor;
$year_array.="</select>";
}
}
else
{
$year_array.="<input type='text' value=''>";
}
答案 1 :(得分:1)
我制作了一个非常简化的代码版本,只是让你理解这个概念:
<强>控制器:强>
public function getyear(Request $request){
$years_array = [];
if(isset($request->brand)){
for($i = 1900; $i<2001; $i++ ){
$years_array[] = $i;
}
}
$response['success'] = true;
$response['empty'] = empty($years_array);
if(!empty($years_array)) $response['years_array'] = $years_array;
return response()->json($response);
}
使用Javascript:
$.getJSON("{!! URL::route('appraisal.getyear') !!}", {brand: brand[0],ser:ser}, function(data) {
if(data.success === false) return;
$year_container = $('#yeartext');
if(data.empty === false){
$select = $('<select></select>')
for(i=0; i<data.years_array.length; i++){
$select.append('<option value="'+ data.years_array[i] +'">'+ data.years_array[i] +'</option>')
}
$year_container.append($select);
}
else{
$year_container.append('<input type="text" name="year"');
}
});