Laravel 响应::json 失败

Posted

技术标签:

【中文标题】Laravel 响应::json 失败【英文标题】:Laravel Response::json failing 【发布时间】:2014-07-01 23:35:33 【问题描述】:

我正在尝试通过将数组传递给 Response::json() 从服务器发送 JSON 响应,但我不断在 vendor\laravel\ ... \jsonReponse.php 中收到 UTF-8 Invalid Argument 49

public function getAllForInbox() 

    $conn = SqlServerPdo::connect();

    $query = "Some Query";

    $statement = $conn->prepare($query);

    $success = $statement->execute();

    $result = $statement->fetchAll(PDO::FETCH_ASSOC);

    SqlServerPdo::disconnect();

    return Response::json($result);


其他一切正常。我在 $result 上做了一个 var_dump。 是一个包含数据数组的数组。每个数组都是结果中的一行。

问题是......它工作得很好......然后我运行了 Composer Update......现在它不再工作了 oO......这可能是供应商/laravel 文件夹上的一些错误吗? ??

事实上,我有一个本地开发服务器正在运行,它工作得很好,当我上传到当前托管应用程序的服务器时,它不会......它是 PHP 吗???

这是示例 $result var dump

array(10) 
  [0]=>
  array(6) 
    ["numint"]=>
    string(1) "1"
    ["name"]=>
    string(15) "Sistel Helpdesk"
    ["priority"]=>
    string(1) "0"
    ["assignation"]=>
    string(0) ""
    ["tickets_open"]=>
    string(1) "1"
    ["tickets_with_conv"]=>
    string(1) "0"
  
...

还有 9 个其他结果

【问题讨论】:

【参考方案1】:

它可能是您数据库中的一些非 UTF-8 字符串。

Response::json() 尝试运行时 - 由于非 UTF8 而失败。

您需要循环遍历数组并在所有结果上运行utf8_enconde(),然后再将其传递给Response::json()

【讨论】:

这会引发错误 => utf8_encode() 期望参数 1 是字符串,给定数组 得到了只能通过引用传递的变量 iconv() 期望参数 3 是字符串,给定数组 这是我的帮助....如果我通过 $result[0] ...这是数组中的第一个数组..它可以工作 问题是当我传递一个数组数组时......由于某种原因它不喜欢它

以上是关于Laravel 响应::json 失败的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 强制 json 响应 api

如果验证失败/成功,Laravel 会更改响应标头

Laravel 用户模型未在 JSON 响应中处理

JSON 响应断言失败 PHP 单元

composer安装laravel-u-editor及其使用

有关 JSON、cURL 和 laravel 的参考文档