【问题标题】:parse JSON working on localhost but not on server解析在本地主机上工作但不在服务器上工作的 JSON
【发布时间】:2014-01-17 12:30:00
【问题描述】:

我知道有很多关于 json 的问题,但他们没有回答我的问题(或者我找不到任何对我有帮助的东西)。 向我发送数据的 Symfony2 控制器的一部分。

return $this->createResponse(array(
            'result' => $users
    ));
die();
}
/**
 * Interni pomocna funkce na vytvareni json odpovedi
 * @param unknown $array
 * @return \Symfony\Component\HttpFoundation\Response
 */
protected function createResponse($array = array()) {
return new Response(
        json_encode($array),
        200,
        array(
                        header('Content-type: application/json')    
        )
);
}

获取 JSON 数据的 Javascript 函数。

function getUsers(date_from, date_to) {
alert(date_from+" "+date_to);
var url = "{{ path('vetkomdochazkaBundle_apiGetUsers') }}";
$.post(url, JSON.stringify([date_from,date_to]), function(data) {
           markUsers(data['result']);
            }, 'json');
};

在本地主机(wamp 服务器)上一切正常,我获取数据并解析它,以便我可以将它用作数组。但是当我在 php5.3 服务器上运行它时,我得到了正确的数据(我可以用 JSON.stringify 编写它),但我不能像在 localhost 上那样使用它们(我不能使用 alert(data['result' ]),它只写对象Object。

我做错了什么?

【问题讨论】:

  • data 包含什么,console.log(data); 做过吗?
  • console.log 在本地主机上显示与警报相同的数据,但我更改了 cyclus markUsers 功能,它现在也在服务器上工作。我使用 for (key in users) 而不是 for(index = 0; index
  • 我知道这对你的问题没有帮助,但是从 Symfony 的 2.1 版开始,有一个名为 JsonResponse 的类。您应该能够以这种方式返回您的响应:return new JsonResponse($array);
  • header() function 不返回任何内容。您的array(header('Content-type: application/json')) 很可能是错误的。
  • @Alvaro:你说得对,这绝对是他的问题。

标签: javascript php json parsing symfony


【解决方案1】:

Symfony 有一个JsonResponse 对象,它可以让你的代码更简洁,并且可以解决你的问题。另外,取出骰子

/**
 * Interni pomocna funkce na vytvareni json odpovedi
 * @param unknown $array
 * @return \Symfony\Component\HttpFoundation\JsonResponse
 */
protected function createResponse($array = array()) {
    return new JsonResponse(
        $array,
        200
    );
}

否则,你需要设置标题,像这样

return new Response(
    json_encode($array),
    200,
    array('Content-type', 'application/json')
);

【讨论】:

    【解决方案2】:

    检查您的 PHP 版本 JSON 函数是否为 PHP 5 >= 5.2.0,

    【讨论】:

    • OP 说他在他的服务器上使用 PHP 5.3。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-04
    • 2014-01-15
    • 1970-01-01
    相关资源
    最近更新 更多