This is my ajax function in view calling the controller.
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
type: "get",
url: '/rooms/{{ $roomtype->type_id }}',
data: "",
success: function(data) {
console.log(data);
//var str = "<option value="+data+">"+data+"</option>";
//console.log(str);
//$( "select" ).append( str );
//$( ".inner" ).append( str );
}
})
});
</script>
This is my controller function being called by my ajax from view
public function numberOfRooms($type_id, Request $request) {
$room_model = new room;
// $request->session()->forget('no_rooms');
//$request->session()->regenerate();
$no_rooms = $room_model - > where('type_id', '=', $type_id) - > get() - > count();
//$request->session()->put('no_rooms', $no_rooms);
return back() - > with($no_rooms);
}
I want the variable to be returned here inside a drop down :
<select class="inner right-align">
<option value="" disabled selected>Choose your option</option>
<option>{{ $no_rooms }}</option>
</select>
Check your code, there are several things you have to keep in mind
In controller, return a array with the information
public function numberOfRooms(Request $request, $type_id)
{
$room_model = new room;
$no_rooms = $room_model->where('type_id', '=', $type_id)->get()->count();
return [ 'rooms' => $no_rooms];
}
in HTML, add csrf token
<html>
<head>
...
<meta name="csrf-token" content="{{ csrf_token() }}" />
...
define a selector:
<select id="your-selector" class="inner right-align">
<option value="" disabled selected>Choose your option</option>
</select>
in JS
$(document).ready(function(){
$.ajaxSetup({
headers : {
'X-CSRF-TOKEN' : $('meta[name="csrf-token"]').attr('content')
},
});
function loadRoom(){
$.ajax({
type: "get",
url: '/rooms/{{ $roomtype->type_id }}',
data: "",
success: function(data) {
for (room in data.rooms) {
$('#your-selector').append($('<option>', {
value: room.id,
text: room.name
}));
}
}
})
}
loadRoom();
});
I hope it works good luck
use {{url('/rooms/'.$roomtype->type_id)}}
and add data : {"_token": "{{ csrf_token() }}"}
in your ajax url.
and change return statement in your controller like this
return Response::json($no_rooms);
In your controller
return array(
'rooms' => $rooms
);
In your ajax
add this dataType: "json" after type: "GET" or anywhere like this
$ajax({
type: "get",
dataType: "json"
And in your ajax success parse the data
success:function(data){
console.log(data.rooms)
}