我正在尝试使用Ajax将数组从我的twig文件传输到另一个控制器。
我的Ajax代码:
$(window).scroll(function () {
if($(window).scrollTop() + $(window).height()>= $(document).height()){
getmoredata();
}
})
var page = 1;
function getmoredata(array_data_file) {
var array_data_file = { {{ announces }} } ;
var theurl = '{{ path('announce_page', {'id': "id", 'game': game}) }}';
theurl = theurl.replace("id", page);
$.ajax({
type: "GET",
data: {data_array:array_data_file},
url: theurl,
dataType: "json",
cache: false,
success: function (response) {
$("#content").append(response.classifiedList);
page = page + 1;
$('#spinner').hide();
console.log(response);
},
error: function (response) {
console.log(response);
}
});
}
</script>
控制器代码:
public function pageAction(Request $request, $id, $game)
{
$em = $this->getDoctrine()->getManager();
//$announces = $em->getRepository('PlatformBundle:Announce')->byGame($game);
$announces = $request->request->get('data_array');
$list = $this->renderView('announce/result.html.twig', array(
'announces' => $announces,
'game' => $game
));
$response = new JsonResponse();
$response->setData(array('classifiedList' => $list));
return $response;
}
关于我的代码的两个问题:
首先是关于获取一个javascript变量,我的实体宣布谁包含了很多东西。
var array_data_file = { {{ announces }} } ;
这不行,所以我尝试了类似的东西
var array_data_file ={{ announces|json_encode() }};
但是当我发出警报时(array_data_file); 我有类似的东西:
object Object],[object Object],[object Object],[object Object],[object 对象],[对象对象],[对象对象],[对象对象],[对象 对象],[对象对象],[对象对象],[对象对象]
第二件事,我的控制器总是有一个变量NULL
$announces = $request->request->get('data_array');
此代码适用于在我的页面中发布无限通知的无限滚动系统。我想从我的索引页面传递我的宣布,因为没有像这样在数据库中进行新的研究:
$announces = $em->getRepository('PlatformBundle:Announce')->byUser($user);
任何解决方案?
谢谢大家
编辑:
我几乎完成了解决我的问题。
我已安装 现在我可以使用此命令使用json进行变量格式。
var contactsArray = "{{ announces|serialize('json') }}";
现在我的变量包含一个很长的字符串字符串。
我已将“GET”类型更改为“POST”,因为我的网址太长了。
现在回到我的控制器,我从POST获取变量
$data = $request->request->get('data_array');
但它仍然是一个很长的字符串,我试着用这个回到我的实体:
$serializer = $this->container->get('jms_serializer');
$announces = $serializer->deserialize($data, 'Wolk\PlatformBundle\Entity\Announce', 'json');
但我有这样的错误
"Could not decode JSON, syntax error - malformed JSON."
问题是,我读了一些帖子,他们说要插入我的实体的每个变量
- @JMS \串行\注释\类型( “串”)
但是它太长了,我从宣布x /
中获得了很多变量和实体我在这里