2017-05-30 3 views
-1

2つの入力フィールドがあります。onChange Ajaxを選択するmysqlデータベースのデータリストを取得するLaravel 5.4

最初の選択入力フィールドには静的データが含まれています。

第2の選択入力フィールドは、第1の入力フィールド選択値に応じて入力する必要があります。

以下は、私が返さAjaxのデータを取得することができません私のコード

<select id="filter_type" name="filter_type" class="selectpicker form-control" style="width:30%;"> 
      <option value>Select Filter Type..</option> 
      <option value="abc">Abc</option> 
      <option value="def">Def</option> 
      <option value="ghi">Ghi</option> 
      <option value="jkl">Jkl</option> 
</select> 

<select id="search" name="search" class="selectpicker form-control" style="width:70%;" disabled="disabled"> 
     <option value>Select Filter type first..</option> 
</select> 

Javascriptを

<script type="text/javascript"> 
$(document).ready(function() 
{ 
$("#filter_type").change(function() 
{ 
var id=$(this).val(); 
console.log(id); 
var dataString = 'id='+ id; 
console.log(dataString); 
$.ajax 
({ 
type: "GET", 
url: "{{url('/users/abc')}}", 
data: dataString, 
cache: false, 
success: function(data) 
{ 
    console.log(data); // I get error and success function does not execute 
} 
}); 

}); 

}); 
</script> 

コントローラ

public function get_onchange_data(Request $request) 
{ 
     if($id == 'abc') 
     { 
      $searches = Abc::select('field_name')->get(); 
      return response(view('/users/Def', compact('searches'))->render()); 
     } 
} 

です。

私はこのエラーを取得する:条件が間違っている場合

GET http://localhost:8000/users/abc?id=year&_=1496176229318 500 (Internal Server Error) 

は、私は私のチェックを中だと思います。私は$ idをdataStringから渡された値として考えています。

私はこれを行う方法がわかりません。データを取得し、それを条件と比較し、最後にデータの配列結果を返します。

編集コードここ

$("#filter_type").change(function() 
{ 
var id=$(this).val(); 
console.log("1:"+id); 
var dataString = '{id:'+ id+'}'; 
console.log("2:"+dataString); 
$.ajax 
({ 
type: "GET", 
url: "{{url('/users/abc')}}", 
data: dataString, 
cache: false, 
success: function(data) 
{ 
    console.log("3:"+data); 
} 
}); 

}); 

public function get_search_data(Request $request) 
{ 
    return response($request->input('id')); 
    } 

答えて

1

つ/ 3つの問題:あなたはあなたの方法の文脈で$idを定義していない

  1. 。あなたの要求オブジェクトを介してアクセスしてください$request->input('id');
  2. データを文字列として送信せず、オブジェクトとして送信しないでください。data: {id: id}
  3. 常に応答を返します。ステートメントがfalseと評価された場合、要求は応答されません。
+0

私は送信したものとして応答を返そうとしていますが、私は空の応答を得ます。これは私がコントローラーで何をしているかです。リターンレスポンス($ request-> input( 'id'));私はこれを変更しましたdataString = '{id:' + id + '}';あなたが言ったように。私はこれを成功させました:console.log( "3:" + data);だから戻ってくるものがわかっているのは私だけだ3: –

+0

申し訳ありませんが、あなたが私に教えたいことを理解していません。 また、ペイロードを文字列にしないでください。それをjavascriptオブジェクトにします。 – Strernd

+0

編集セクションで質問を更新しました。あなたが提案したコードを更新しました。私はjsオブジェクトを認識していません。あなたは意味しますか? data:{id:id} –

関連する問題