Laravel AJAX GET 并显示新数据

Posted

技术标签:

【中文标题】Laravel AJAX GET 并显示新数据【英文标题】:Laravel AJAX GET and show new data 【发布时间】:2018-03-16 11:58:38 【问题描述】:

我一直在做一个项目,到目前为止,我已经能够使用 AJAX POST 到数据库,所以当用户提交数据时,页面不会刷新,但数据仍会上传到数据库。

现在我想做的是向用户显示这些结果,而无需刷新页面。我花了很多时间试图弄清楚,但现在我很困惑。谁能指出我正确的方向?我已经阅读了网站上的文档,观看了数小时的视频,但仍然没有运气。

到目前为止我的代码。

脚本

$.ajax(
    type: 'GET', //THIS NEEDS TO BE GET
    url: '$video->id/shownew',
    success: function (data) 
        console.log(data);
        $("#data").append(data);
    ,
    error: function()  
         console.log(data);
    
);

控制器

public function shownew($video)

    $getstamps = DB::table('timestamps')
                    ->where('videoid', '=', $video)
                    ->orderByRaw('LENGTH(timestamp_time)', 'ASC')
                    ->orderBy('timestamp_time', 'asc')
                    ->get();

    return response()->json(array('success' => true, 'getstamps' => $getstamps));

控制台

success: true, getstamps: Array(3)
getstamps: Array(3)
    0: 
        timestamp_id: 128,
        videoid: "5",
        timestamp_name: "Title",
        timestamp_time: 1,
        created_at: "2017-10-04 23:28:12",
        …
    
    1: 
        timestamp_id: 129,
        videoid: "5",
        timestamp_name: "1",
        timestamp_time: 1,
        created_at: "2017-10-04 23:41:01",
        …
    
    2: 
        timestamp_id: 130,
        videoid: "5",
        timestamp_name: "1",
        timestamp_time: 1,
        created_at: "2017-10-04 23:41:21",
        …
    
length: 3
__proto__: Array(0)
success: true
__proto__: Object

【问题讨论】:

您希望如何将 json 数据结果转换为 $("#data") ?在这里你需要一些 JS 中的逻辑或者你可以使用 VUE.js @Webdesigner 我想使用 javascript 来追加数据,但我也有一个使用 csrf_field() 和方法 delete 的删除按钮。我不确定如何以保留删除功能的方式实现它。此外,实际上并未附加数据。该部分不工作,控制台显示没有错误 删除功能与将数据附加到您的页面有什么关系?如果您使用 ajax 请求从 Laravel 获得正确的 json 数据,那么这不是 Laravel 也不是 Ajax 问题,只是 JS 和 jQuery 【参考方案1】:

这里是你的问题的解决方案

$.ajax(
    type: 'GET', //THIS NEEDS TO BE GET
    url: '$video->id/shownew',
    success: function (data) 
        var obj = JSON.parse(data);
        var your_html = "";
        $.each(obj['getstamps'], function (key, val) 
           your_html += "<p>My Value :" +  val + ") </p>"
        );
         $("#data").append(you_html); //// For Append
         $("#mydiv").html(your_html)   //// For replace with previous one
    ,
    error: function()  
         console.log(data);
    
);

【讨论】:

【参考方案2】:

这解决了问题。

        $.ajax(
        type: 'GET', //THIS NEEDS TO BE GET
        url: '$video->id/shownew',
        dataType: 'json',
        success: function (data) 
            console.log(data);
            container.html('');
            $.each(data, function(index, item) 
            container.html(''); //clears container for new data
            $.each(data, function(i, item) 
                  container.append('<div class="row"><div class="ten columns"><div class="editbuttoncont"><button class="btntimestampnameedit" data-seek="' + item.timestamp_time + '">' +  new Date(item.timestamp_time * 1000).toUTCString().match(/(\d\d:\d\d:\d\d)/)[0] +' - '+ item.timestamp_name +'</button></div></div> <div class="one columns"><form action="'+ item.timestamp_id +'/deletetimestamp" method="POST">' + '!! csrf_field() !!' +'<input type="hidden" name="_method" value="DELETE"><button class="btntimestampdelete"><i aria-hidden="true" class="fa fa-trash buttonicon"></i></button></form></div></div>');
          );
                container.append('<br>');
            );
        ,error:function() 
             console.log(data);
        
    );

【讨论】:

以上是关于Laravel AJAX GET 并显示新数据的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5:在路由中获取 ajax 数据并传递给控制器

laravel框架实现ajax分页

在 Laravel 中调用 ajax 后数据表无法正常工作

如何将数据从ajax get方法发送到laravel中的控制器?

Laravel:使用 AJAX 请求渲染部分视图

使用 Laravel 5.2 在数据表上出现 Ajax 错误