json - 在 symfony 3.4 中使用 AJAX 从控制器加载树枝中的数据
问题描述
我正在尝试使用 AJAX 从控制器加载树枝中的数据,这是我的控制器操作:
public function ajaxAction(Request $request) {
$students = $this->getDoctrine()
->getRepository('techeventBundle:event')
->findAll();
if ($request->isXmlHttpRequest() || $request->query->get('showJson') == 1) {
echo "request successfull";
$jsonData = array();
$idx = 0;
foreach($students as $student) {
$temp = array(
'name' => $student->getTitre(),
'address' => $student->getDescription(),
);
$jsonData[$idx++] = $temp;
}
return new JsonResponse($jsonData);
} else {
return $this->render('@reservation/Default/ajax.html.twig');
}
}
这是我的树枝文件:
<!-- test Ajax --->
<button id="loadstudent">load events</button>
<div id="student">
<div id="name"></div>
<div id="address"></div>
</div>
<!-- test Ajax --->
<script language = "javascript"
src = "https://code.jquery.com/jquery-2.2.4.min.js"></script>
<script language = "javascript">
$(document).ready(function(){
$("#loadstudent").on("click", function(event){
$.ajax({
url: '/student/ajax',
type: 'POST',
dataType: 'json',
async: true,
success: function(data, status) {
var e = $('<tr><th>Name</th><th>Address</th></tr>');
$('#student').html('');
$('#student').append(e);
for(i = 0; i < data.length; i++) {
student = data[i];
var e = $('<tr><td id = "name"></td><td id = "address"></td></tr>');
$('#name', e).html(student['name']);
$('#address', e).html(student['address']);
$('#student').append(e);
alert('Ajax request success');
}
},
error : function(xhr, textStatus, errorThrown) {
alert('Ajax request failed.');
}
});
});
});
</script>
让我向您描述一下这个问题,当我单击按钮(“#loadstudent”)时,它会显示“Ajax 请求失败”警报,如果您在我的操作代码中看到,我添加了 echo“请求成功” ; 在那之后 :
if ($request->isXmlHttpRequest() || $request->query->get('showJson') == 1) {
它没有显示,这意味着它没有进入状态!请帮助我一周以来一直陷入这个问题,
解决方案
在控制器中添加路由名称@Route("/student/ajax", name="get-students")
例子:
/**
* @Route("/student/ajax", name="get-students")
*/
public function ajaxAction(Request $request) {
if ($request->isXmlHttpRequest() || $request->query->get('showJson') == 1) {
$jsonData = array(
array(
'name' => 'name1',
'address' => 'addres1',
),
array(
'name' => 'name2',
'address' => 'addres2',
),
);
return new JsonResponse($jsonData);
} else {
return $this->render('@reservation/Default/ajax.html.twig');
}
}
现在,$.ajax
将请求发送到路由名称url: "{{ path('get-students') }}"
<script language = "javascript">
$(document).ready(function () {
$("#loadstudent").on("click", function (event) {
$.ajax({
url: "{{ path('get-students') }}",
type: 'POST',
dataType: 'json',
async: true,
success: function (data, status) {
var e = $('<tr><th>Name</th><th>Address</th></tr>');
$('#student').html('');
$('#student').append(e);
for (i = 0; i < data.length; i++) {
student = data[i];
var e = $('<tr><td id = "name"></td><td id = "address"></td></tr>');
$('#name', e).html(student['name']);
$('#address', e).html(student['address']);
$('#student').append(e);
alert('Ajax request success');
}
},
error: function (xhr, textStatus, errorThrown) {
console.log(xhr, textStatus, errorThrown);
alert('Ajax request failed.');
}
});
});
});
</script>
树枝文件输出:
Name Address
name1 addres1
name2 addres2
推荐阅读
- python-3.x - 如何在剧本上设置 ansible mitogen 策略?
- node.js - 使用查找查询后,我想将子类别作为 json 对象附加到父类别
- c# - 为什么我的应用程序试图读取错误文件夹中的对象?
- php - 跟踪阅读电子邮件所花费的时间
- macos - php 文件未使用 nginx-macOs 打开
- c# - AutoMapper 和 CA1506:避免过度的类耦合
- unity3d - 测试使用本地私有 SerializedField 的 Unity 方法
- c# - .netcore 单元测试运行不正常
- c# - 应用程序仅在一台设备上崩溃。从图库访问图像时返回 null 而不是 uri
- node.js - 如果我不关心人类的可读性,使用“二进制”作为读取文件的编码是一种好习惯吗?