我正在尝试在输入更改时将输入值实时发布到Laravel,并将包含所有匹配数据的数组返回到查询。但是我总是收到一个空数组。我已经尝试了很多东西来使它工作但没有成功。
控制台说:
对象 等级:" []" status:对象 proto :对象
matchvalue在控制台中有一个值,当我将$ this-> type更改为数据库中的字符串时,查询会起作用。所以问题的根源是$ request和$ request->类型,但我找不到解决方案。
我很感激所有的帮助,因为我真的已经到了这个问题的终点。提前谢谢。
$(document).ready(function() {
$("#question_type input").on('change', function postinput() {
var matchvalue = $(this).val(); // this.value
$.ajax({
type: 'POST',
url: "{{route('get-levels')}}",
dataType: "json",
data: matchvalue
}).done(function(response) {
console.log(matchvalue);
console.log(response);
$('#question_type').append(response.levels);
console.log(response.levels);
});
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<fieldset class="form-group form_section" id="question_type">
<h5>Selecteer in type vraag</h5>
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input input" type="radio" name="type" id="exam" value="exam">
Examenvraag
</label>
</div>
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input input" type="radio" name="type" id="practice" value="practice">
Oefenvraag
</label>
</div>
</fieldset>
ROUTE
Route::post('/selectQuestion/selection/levels', 'SelectionController@getLevels')->name('get-levels')->middleware('auth');
CONTROLLER
public function getLevels(Request $request){
$this->_type = $request->type;
$levels =
Question::
distinct()
->where('type', $this->_type)
->orderBy('level')
->get(['level']);
return response()->json(['levels' => strip_tags($levels), 'status' => $request]);
}
&#13;
答案 0 :(得分:1)
JavaScript代码中的data
属性应为:
data: { 'type': matchvalue }
更改行:
$this->_type = $request->type;
为:
$this->_type = $request->input('type');
验证$this->_type
是否已从表单中捕获输入。
您还可以尝试将查询更改为:
$levels = Question::distinct()->where('type', $this->_type)->orderBy('level')->get()->lists('level');