2017-05-30 83 views
-1

我有2個選擇輸入字段。選擇onChange Ajax從MySQL數據庫中獲取數據列表Laravel 5.4

首先選擇輸入字段包含靜態數據。

第二選擇輸入字段需要根據第一個輸入字段選擇值進行填充。

下面是我的代碼

<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傳遞的值。

我不知道該怎麼做。獲取數據,將其與if條件進行比較,最後返回數據的數組結果。

編輯的代碼

$("#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

二/三的問題在這裏:

  1. 你有沒有在你的方法的上下文中定義$id。通過你的請求對象$request->input('id');
  2. 訪問它,不要把你的數據作爲一個字符串,將其作爲一個對象data: {id: id}
  3. 始終返回響應。如果該語句的計算結果爲false,則該請求將不會被回答。
+0

我想返回響應,因爲我發送了,但我得到空響應。這正是我在控制器中所掌握的。返回響應($ request-> input('id'));我改變了這個var dataString ='{id:'+ id +'}';如你所說。在成功我高興:console.log(「3:」+數據);所以我知道什麼是返回我只得到3: –

+0

對不起,我不明白你想告訴我什麼。 也不要使有效載荷成爲一個字符串。使其成爲一個javascript對象。 – Strernd

+0

我用編輯部分更新了我的問題。根據你的建議,它有新更新的代碼。我不知道js對象。你的意思是。數據:{id:id} –