работа с symfony 2.8 Я пытаюсь сделать AJAX-вызов контроллера, который возвращает JSON, содержащий один массив.
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);
$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
}
});
});
Если я напишу URL, который вызывает контроллер в браузере, я смогу увидеть это:
[{ "Fecha": "26-02-18", "песо": "67,0"}, { "Fecha": "28-02-18", "песо": "66,0"}, {» Fecha ":" 03-03-18" , "песо": "64,0"}]
Итак, я понимаю, что проблема в том, что javascript не принимает данные ..., но ...
... если я изменю массив в контроллере и сделаю идентичный массив "artesanal way" ...
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
И для дополнительной проверки я возвращаюсь к вызову через браузер и получаю это:
* +1032 * [{ "Fecha": "26-02-18", "песо": "67,0"}, { "Fecha": "28-02-18", "песо": "66,0"}, {» Fecha ":" 03-03-18" , "песо": "64,0"}]
Точно так же, как в другом случае
Итак, вопрос в том, почему метод jquery ajax «любит» ответ со вторым массивом и «не любит» первый (являющийся тем же массивом)?
EDIT:
Здесь вы можете увидеть var_dump () массивов перед json_encode ():
Массив $ конденсатор
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"
}
}
Array $ 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"
}
}