Laravel在ajax post请求后返回空字符串

时间:2017-03-03 10:33:53

标签: javascript php jquery ajax laravel-5

我正在尝试在输入更改时将输入值实时发布到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;
&#13;
&#13;

1 个答案:

答案 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');