【问题标题】:Getting error while passing decoded json data from controller to view将解码的 json 数据从控制器传递到视图时出错
【发布时间】:2018-05-05 06:04:54
【问题描述】:

当我在控制器中使用dd($arr) 时,解码的 json 数据会正确打印。如何将此解码的 json 数据传递到我的视图中?

控制器代码

public function test()
{
    // $sld = $request['sld'];
    // $tld = $request['tld'];
    $response = Curl::to('https://reseller.enom.com/interface.asp?command=check&sld=decksys&tld=info&responsetype=xml&uid=resellid&pw=resellpw')
        ->get();

   //check if we are getting a response

 $xml = simplexml_load_string($response);
 $json   = json_encode($xml);

 $arr = json_decode($json, true);
 dd($arr);
 return view('clientlayout.main.test', compact('arr'));

}

刀片文件:

`{{ $arr }}` 

我的路线文件如下:

 Route::get('/test','EnomController@test');

如何解决这个错误?

htmlspecialchars() 期望参数 1 是字符串,给定数组

【问题讨论】:

  • dd($arr) 中显示的输出是什么
  • 这是 dd($arr) 数组的输出:19 [▼ "Command" => "CHECK" "APIType" => "API.NET" "Language" => "eng" " ErrCount" => "1" "errors" => array:1 [▶] "ResponseCount" => "1" "responses" => array:1 [▶] "MinPeriod" => "1" "MaxPeriod" => "10" "Server" => "sjl0vwapi16" "Site" => "eNom" "IsLockable" => "True" "IsRealTimeTLD" => "True" "TimeDifference" => "+7.00" "ExecTime" => " 0.036" "完成" => "true" "TrackingKey" => "999b66f5-5485-4dfa-bb9e-8424d4d0e9ae" "RequestDateTime" => "5/4/2018 晚上 11:56:38" "调试" => [ ] ]
  • 好的,我会更新我的答案

标签: laravel laravel-5 laravel-4 laravel-5.2


【解决方案1】:
return view('clientlayout.main.test', compact('arr'))->with('arr', $arr); 

你的观点:{{ $data['obj'] }} 会起作用。

【讨论】:

    【解决方案2】:

    此错误的答案已在堆栈上可用,您正在访问那些为空或空白的对象,这是解决方案的链接: htmlspecialchars expects parameter 1 to be string

    可以在控制器中使用 curl,例如:

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,
                "https://reseller.enom.com/interface.asp?command=check&sld=decksys&tld=info&responsetype=json&uid=resellid&pw=resellpw");
    curl_setopt($ch, CURLOPT_TIMEOUT, 15);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_ENCODING, "gzip,deflate");
    $arr  = json_decode(curl_exec($ch), true);
    curl_close($ch);
    

    然后返回数据到视图,在视图中使用foreach循环:

    @foreach($arr as $item)
        {{$item['Command']}}
        {{$item['APIType']}}
    @endforeach
    

    并想在打印前检查使用isset:

    @if(isset($item['Command']))
        {{$item['Command']}}
    @endif
    

    希望有帮助

    【讨论】:

    • 没关系。但问题是,来自上述 json 的数据没有显示/打印在我的视图文件中。当我使用 {{$item['Command']}} 时,我得到了非法的字符串偏移命令。
    • API 正在返回 xml 并在转换为 json 后给出 json 验证错误。我建议在 API 中使用 responseType=json,例如:[reseller.enom.com/…
    猜你喜欢
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多