【问题标题】:Parse php json to javascript [duplicate]将php json解析为javascript [重复]
【发布时间】:2017-10-20 07:49:18
【问题描述】:

所以,我必须将一个 php json 解析成 javascript。

代码如下所示:

$thumbnails = [];
foreach ($images as $key => $image) 
{
  $thumbnails[$image->time] = [
    'src' => MovieEntity::getImageWithPublicPath(
      $movie->id, $image->filename, 130, 0, false
    ),
    'width' => '165px',
    'height' => '95px'
  ];
}

return json_encode($thumbnails, JSON_UNESCAPED_SLASHES);

结果是:

{"5":{"src":"google.ro","width":"165px","height":"95px"},"7":

我想将srcwidthheight 插入为图片,如下所示:

<a href="">
  <img src="src of image" width="" height="">
</a>

我需要做什么? PHP 中的这个变量称为$thumbnails,它返回我上面显示的 JSON。

<?php echo $thumbnails ?>

LE:我的解决方案是:

<?= '<script>var json='.$thumbnails.'</script>' ?>
console.log(json);

这将在控制台中返回 json。

【问题讨论】:

  • 它不重复。我需要一些不同的东西谢谢

标签: javascript php jquery json yii


【解决方案1】:

如果您使用 jQuery:$.parseJSON()

如果您使用纯 JavaScript:JSON.parse()

// jQuery snipet
var thumbnails = $.parseJSON('<?php echo $thumbnails; ?>');
console.log(thumbnails.src);
console.log(thumbnails.width);
console.log(thumbnails.height);

【讨论】:

  • 如果我尝试使用您的代码,我得到了这个: Uncaught SyntaxError: Unexpected token
  • @StefanIordache 有一个错字:我写的是 $thumnails 而不是 $thumbnails。立即尝试
  • 是的,我从一开始就看到了。我仍然从控制台收到此消息。未捕获的语法错误:Function.oe.parseJSON 处 JSON.parse () 位置 0 处的 JSON 中的意外标记
  • @StefanIordache 我可以看到当您回显 $thumbnails 时它会打印您的 JavaScript 代码吗?试试 console.log('') 让我看看 JSON 是否正确
  • 我得到引号之间的字符串
【解决方案2】:

您可以在纯 JavaScript 中执行此操作。

将 JSON 回显到脚本标签中

<script type="application/json" id="json">
    <?php echo $thumbnails; ?>
</script>

然后用 JavaScript 定位它

var json = JSON.parse(document.getElementById('json').innerHTML);

var img = document.querySelector('img');

img.src = json.src;
img.width = json.width;
img.height = json.height;

【讨论】:

  • 这个解决方案对我不起作用。谢谢
【解决方案3】:

在您的 javascript 中,您必须通过执行 get 请求来请求您的 php 函数(假设您使用 jQuery)。之后,在成功回调中,您拥有数据。所以尝试这样的事情:

$.ajax({
   url : 'file.php', // your php file
   type : 'GET', // type of the HTTP request
   success : function(data){
      var obj = jQuery.parseJSON(data);
      console.log(obj);
   }
});

您可以去here了解更多信息

【讨论】:

  • 我把js和php放在同一个文件里
  • 你不能分成两个文件?或者尝试删除ajax对象中的url属性
猜你喜欢
相关资源
最近更新 更多
热门标签