poltergeist:jquery ajax不接受两个equals响应之一

时间:2018-07-06 11:31:52

标签: javascript php jquery ajax symfony

使用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"
  }
}

2 个答案:

答案 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})