Javascript 操作Json(在传递到视图之前)

Javascript 操作Json(在传递到视图之前),javascript,php,jquery,ajax,laravel,Javascript,Php,Jquery,Ajax,Laravel,我想做的是使用像->diffForHumans()这样的函数。当我试图通过ajax获取数据时,我不知道如何在javascript中操作json,所以我决定在服务器级别进行操作 我的$groups数据如下: Group[1]['created_at'] Group[2]['created_at'] Group[3]['created_at'] 我正在使用return$groups->toJson()返回到视图 我有两个问题 我如何操作json,使其能够在处再次创建,但使用diffForHuma

我想做的是使用像
->diffForHumans()
这样的函数。当我试图通过ajax获取数据时,我不知道如何在javascript中操作json,所以我决定在服务器级别进行操作

我的
$groups
数据如下:

Group[1]['created_at']
Group[2]['created_at']
Group[3]['created_at']
我正在使用
return$groups->toJson()返回到视图

我有两个问题

  • 我如何操作json,使其能够在
处再次创建,但使用diffForHumans()函数?因此,我可以稍后在javascript中调用
组[I]['created_at']
,并获得每个组的操纵值

  • 当我返回到blade视图时,我能够使用类似以下函数:
    {{(strlen($group->body)>150)?substr($group->body),0170.“…:$group->body}}
    。因为我使用的是ajax,所以我认为在传入json之前,最好在后端级别执行此函数

  • 这种方法正确吗?对于我想要实现的目标,最好的方法是什么


    编辑我的第一个问题:

    我能够以
    dd($groups[2]['created_at']->diffForHumans()的形式获得它
    但是,我无法使其在以下方面起作用:

    foreach($groups as $key=>$group) {
       dd($group); // collection
       dd($key); // 0 
       dd($group[$key]); // null
    }
    
    我不知道如何在javascript中操作json,所以我决定在服务器级别进行操作

    您的数据完全可以在Javascript中处理

    要在javascript中操作JSON,首先需要将JSON字符串解析为javascript对象。要实现这一点,请在JS中使用
    JSON.parse()
    方法,并像处理任何其他Javascript对象一样访问对象的属性

    e、 g

    现在,在Javascript中使用
    变量可以实现以下功能:

    groups[1]['created_at']
    
    关于编辑:变量
    $groups
    是一个集合,因此为了在其中循环,需要将其转换为数组:

    $groupsArray = $groups->toArray();
    
    foreach($groupsArray as $key => $group) {
      var_dump($group); 
      var_dump($key); 
      var_dump($group[$key]); // not possible since $key is the key to $group hence would return null
      var_dump($groupsArray[$key]); // use this instead
    } 
    
    我不知道如何在javascript中操作json,所以我决定在服务器级别进行操作

    您的数据完全可以在Javascript中处理

    要在javascript中操作JSON,首先需要将JSON字符串解析为javascript对象。要实现这一点,请在JS中使用
    JSON.parse()
    方法,并像处理任何其他Javascript对象一样访问对象的属性

    e、 g

    现在,在Javascript中使用
    变量可以实现以下功能:

    groups[1]['created_at']
    
    关于编辑:变量
    $groups
    是一个集合,因此为了在其中循环,需要将其转换为数组:

    $groupsArray = $groups->toArray();
    
    foreach($groupsArray as $key => $group) {
      var_dump($group); 
      var_dump($key); 
      var_dump($group[$key]); // not possible since $key is the key to $group hence would return null
      var_dump($groupsArray[$key]); // use this instead
    } 
    

    您可以使用
    transform
    方法,而不是尝试将对象转换为数组(从而丢失集合和
    toJson
    方法)

    $groups->transform(function($item, $key) {
        $item->created_at = $item->created_at->diffForHumans();
        return $item;
    });
    
    return $groups->toJson();
    

    您可以使用
    transform
    方法,而不是尝试将对象转换为数组(从而丢失集合和
    toJson
    方法)

    $groups->transform(function($item, $key) {
        $item->created_at = $item->created_at->diffForHumans();
        return $item;
    });
    
    return $groups->toJson();
    

    但是,这样我就不能使用php函数了。我问过php,如果有其他方法可以使用php函数,我很想知道,javascript json。感谢您对您的评论进行编辑。在foreach内部,我尝试了
    $groupsArray[$key]['created_at']=$group->created_at->diffForHumans()
    但是它不起作用。怎么做?我不明白,你想在你的JS中使用
    $groups
    变量吗?你能添加
    diffForHumans()
    方法的定义吗?你不能将它与数组一起使用,一个解决办法是将值传递给它。例如
    diffForHumans()($groups[1]['created_at'])
    。但是,那样的话,我就不能使用php函数了。我在问php,如果有其他使用php函数的方法,在javascript json中,我很想知道。感谢您对您的评论进行编辑。在foreach内部,我尝试了
    $groupsArray[$key]['created_at']=$group->created_at->diffForHumans()
    但是它不起作用。怎么做?我不明白,你想在你的JS中使用
    $groups
    变量吗?你能添加
    diffForHumans()
    方法的定义吗?你不能将它与数组一起使用,一个解决办法是将值传递给它。例如
    diffForHumans()($groups[1]['created_at'])