使用symfony 2.8,我试图对返回包含一个数组的JSON的控制器进行AJAX调用。
控制器:
public function seguimientoAction(Request $request){
$idUnico = $request->query->get('plan-id');
$em = $this->getDoctrine()->getManager();
$idPlan = $em->getRepository('UsuariosBundle:Plan')->findOneByIdUnico($idUnico);
$seguimientos = $em->getRepository('UsuariosBundle:Seguimiento')->findByPlan($idPlan);
$contenedor = array();
foreach ($seguimientos as $seguimiento){
$fecha = $seguimiento->getFecha();
$fecha = $fecha->format('d-m-y');
$peso = $seguimiento->getPeso();
$contenedor[] = ['fecha' => $fecha, 'peso' => $peso];
}
return new JsonResponse($contenedor);
}
JAVASCRIPT:
var selectorSeguimiento = $(".plan-seguimiento");
selectorSeguimiento.click(function(event){
event.preventDefault();
var planid = $(this).attr("data-id");
$.ajax({
type: "POST",
dataType: 'json',
ContentType: 'application/json',
url: Routing.generate('usuarios_dashboard_planes_seguimiento', {planid}),
success: function(data){
console.log(data);-------------------------------->LOG 1
var arrayPeso = [];
var arrayFecha = [];
for(var i in data){
arrayPeso.push(data[i].peso);
arrayFecha.push(data[i].fecha);
}
console.log(arrayPeso);------------------------>LOG 2
console.log(arrayFecha);----------------------------->LOG 3
}
});
});
如果我在浏览器中编写了调用控制器的网址,则可以看到以下内容:
[{“ fecha”:“ 26-02-18”,“ peso”:“ 67.0”},{“ fecha”:“ 28-02-18”,“ peso”:“ 66.0”},{“ fecha“:” 03-03-18“,” peso“:” 64.0“}]
所以,我了解到问题在于javascript无法获取数据...但是... ...如果我更改控制器中的数组,然后以“ artesanal方式”制作相同的数组...
CONTROLER(测试):
public function seguimientoAction(Request $request){
$idUnico = $request->query->get('plan-id');
$em = $this->getDoctrine()->getManager();
$idPlan = $em->getRepository('UsuariosBundle:Plan')->findOneByIdUnico($idUnico);
$seguimientos = $em->getRepository('UsuariosBundle:Seguimiento')->findByPlan($idPlan);
$miarray = array(
array('fecha'=>'26-02-18', 'peso'=>'67.0'),
array('fecha'=>'28-02-18', 'peso'=>'66.0'),
array('fecha'=>'03-03-18', 'peso'=>'64.0'),
);
return new JsonResponse($miarray);
}
...我收到这个:
Array(3)[{…},{…},{…}] 本地主机:90:25
Array(3)[“ 67.0”,“ 66.0”,“ 64.0”] 本地主机:99:25
Array(3)[“ 26-02-18”,“ 28-02-18”,“ 03-03-18”] 本地主机:100:25
为了进行更多检查,我转回使用浏览器进行呼叫,并获得了以下信息:
[{“ fecha”:“ 26-02-18”,“ peso”:“ 67.0”},{“ fecha”:“ 28-02-18”,“ peso”:“ 66.0”},{“ fecha“:” 03-03-18“,” peso“:” 64.0“}]
与其他情况完全相同
所以,问题是,为什么jquery ajax方法“喜欢”第二个数组的响应,却“不喜欢”第一个数组(是相同的数组)?
编辑: 在这里,您可以看到json_encode()之前的数组的var_dump():
数组$ contenedor
array(3) {
[0]=>
array(2) {
["fecha"]=>
string(8) "26-02-18"
["peso"]=>
string(4) "67.0"
}
[1]=>
array(2) {
["fecha"]=>
string(8) "28-02-18"
["peso"]=>
string(4) "66.0"
}
[2]=>
array(2) {
["fecha"]=>
string(8) "03-03-18"
["peso"]=>
string(4) "64.0"
}
}
数组$ miarray
array(3) {
[0]=>
array(2) {
["fecha"]=>
string(8) "26-02-18"
["peso"]=>
string(4) "67.0"
}
[1]=>
array(2) {
["fecha"]=>
string(8) "28-02-18"
["peso"]=>
string(4) "66.0"
}
[2]=>
array(2) {
["fecha"]=>
string(8) "03-03-18"
["peso"]=>
string(4) "64.0"
}
}
答案 0 :(得分:0)
看看请求的标题。服务器返回的内容类型在两个实例中是否相同?
您也可以尝试删除dataType:'json'片刻,以使jquery“ Guess”
答案 1 :(得分:0)
您应将参数作为有效的javascript对象传递给Routing
,更改此行:
Routing.generate('usuarios_dashboard_planes_seguimiento', {planid})
作者:
Routing.generate('usuarios_dashboard_planes_seguimiento', {'plan-id': planid})