PHP Laravel:Ajax 无法检索数据(无属性)
Posted
技术标签:
【中文标题】PHP Laravel:Ajax 无法检索数据(无属性)【英文标题】:PHP Laravel : Ajax couldn't retrieve data (No properties) 【发布时间】:2016-09-11 20:42:15 【问题描述】:我正在构建一个 laravel 应用程序,我想在其中使用 ajax 控制器生成一些报告。在 mysql 中使用相同的原始查询,我可以看到数据,但使用 ajax 我无法在我的视图页面中显示。
在控制台中显示[] No Properties
我不明白为什么它会显示上述错误。如果有人发现有什么问题,请帮我找出来。谢谢。
这是我用来从数据库中检索数据的控制器:
public function ajax_view_schedule(Request $request)
$dept_id= $request->Input(['dept_id']);
$schedule= DB::select(DB::raw("SELECT courses.code as c_code, courses.name as c_name,COALESCE( CONCAT('R. No',':',rooms.room_number,', ',days.name ,', ', allocate_rooms.start,' - ',allocate_rooms.end),'Not Scheduled Yet') AS schedule
FROM departments join courses on departments.id = courses.department_id
left join allocate_rooms on allocate_rooms.course_id=courses.id
left join rooms on allocate_rooms.room_id=rooms.id
left join days on allocate_rooms.day_id=days.id WHERE departments.id='.$dept_id.'"));
return \Response::json($schedule);
这里是带有 ajax 代码的视图页面:
<div class="container" >
<h3> View Class Schedule and Room Allocation Information </h3>
<div class="form-group">
<label for="">Department</label>
<select class="form-control input-sm" required id="department" name="department_id" >
<option>Select a Department</option>
@foreach($department as $row)
<option value="$row->id">$row->name</option>
@endforeach
</select>
</div>
<table class="table table-striped table-bordered" id="example">
<thead>
<tr>
<td>Course Code</td>
<td>Name</td>
<td>Schedule Info</td>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<script type="text/javascript">
$('#department').on('change',function(e)
var dept_id = $('#department option:selected').attr('value');
$.ajaxSetup(
headers:
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
);
$.ajax(
type: "POST",
url : "url('ajax-view-schedule')",
data:dept_id:dept_id,
success : function(data)
var $tbody = $('#example tbody').empty();
$.each(data,function(index,subcatObj)
$tbody.append('<tr><td class="code">' + subcatObj.c_code + '</td><td class="course_name">' + subcatObj.c_name + '</td><td class="schedule">' + subcatObj.schedule + '</td></tr>');
);
);
);
</script>
【问题讨论】:
可以发一下开发者工具网面板截图吗? 当您导航到 website.url/ajax-view-schedule 时,您会看到什么? 我已经上传了截图,这是我的查看页面 【参考方案1】:你实际上是在双引号中,所以 php 会插入你的变量
public function ajax_view_schedule(Request $request)
$dept_id= $request->Input(['dept_id']);
$schedule= DB::select(DB::raw("SELECT courses.code as c_code, courses.name as c_name,COALESCE( CONCAT('R. No',':',rooms.room_number,', ',days.name ,', ', allocate_rooms.start,' - ',allocate_rooms.end),'Not Scheduled Yet') AS schedule
FROM departments join courses on departments.id = courses.department_id
left join allocate_rooms on allocate_rooms.course_id=courses.id
left join rooms on allocate_rooms.room_id=rooms.id
left join days on allocate_rooms.day_id=days.id WHERE departments.id='$dept_id'"));//remove dot from .$dept_id.
return \Response::json($schedule);
【讨论】:
感谢您的宝贵时间。弄错了! :)以上是关于PHP Laravel:Ajax 无法检索数据(无属性)的主要内容,如果未能解决你的问题,请参考以下文章
无法在控制器 Laravel 5.1 中检索通过 ajax 发送的数据
Laravel 使用 AJAX 将 Javascript 变量传递给 PHP 并检索那些