gpt4 book ai didi

mysql - 当变量不为空时,Symfony2 在 AJAX 调用中返回空 JSON

转载 作者:可可西里 更新时间:2023-11-01 06:46:54 25 4
gpt4 key购买 nike

问题

我正在尝试获得 AJAX 响应,这样我就可以摆弄它,使我的表单更易于使用。当我使用 var_dump() 使 Controller (下面的代码)返回正常响应时,我得到了对象的输出,所以我知道查询没有错(我使用 ID 1 来查询调试).但是,当我使用 json_encode() 返回输出时,我只得到一个空的 JSON 文件。

View 中的 HTML 表单

<div id="content">
<form id="myForm" action="{{path('snow_ajax')}}" method="POST" >
Write your name here:
<input type="text" name="name" id="name_id" value="" /><br />
<input type="submit" value="Send" />
</form>
</div>

同一 View 中的脚本

<script type="text/javascript">
$(document).ready(function() {

$("#myForm").submit(function(){
var url=$("#myForm").attr("action");

$.post(url,{
formName:"ajaxtest",
other:"attributes"
},function(data){

if(data.responseCode==200 ){
alert("Got your json!");
}
else{
alert("something went wrong :(");
}
});
return false;
});
});
</script>

正常响应的 Controller (工作)

public function ajaxAction()
{

$location = $this->getDoctrine()->getRepository('SnowFrontBundle:Location')
->find(1);

$output = var_dump($location);

return $output;
}

带有 AJAX 响应的 Controller (不工作,返回空 JSON)

public function ajaxAction()
{

$location = $this->getDoctrine()->getRepository('SnowFrontBundle:Location')
->find(1);

return new Response(json_encode($location), 200);
}

有人可以帮我吗?这让我抓狂!

最佳答案

我设法通过使用 Doctrine2 的实体管理器在数组中获取结果来修复它,之后我继续将其编码为 JSON。我不确定这是否是最简洁的方法(根据我的 IDE,getEntityManager() 似乎已被弃用)但目前它工作正常。

public function ajaxAction()
{
$em = $this->getDoctrine()->getEntityManager();
$query = $em->createQuery('SELECT l FROM Snow\FrontBundle\Entity\Location l WHERE l.id=:id');
$query->setParameter('id', 1);
$result = $query->getArrayResult();

return new Response(json_encode($result), 200);
}

关于mysql - 当变量不为空时,Symfony2 在 AJAX 调用中返回空 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14413947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com