ajax - ajax后重新加载laravel foreach

标签 ajax laravel laravel-blade

我的 View 中有一个 foreach 循环

<div class="col-lg-6 collapse" >
    <div class="job-summ-panel" id="job-summ-panel" >
        @foreach($jobs as $job)
            {{$job['active']}}
        @endforeach
    </div>
</div>

我的页面上还有一个带有 map 标记的 Google map ,当我单击 map 标记时,会进行 ajax 调用来获取与该页面相关的所有信息

$.ajax({
    method: "get",
    url: '/joblocation/jobsummary',
    data: {
        job_ref: marker.getCustomData('job_ref'),
    },
    success: function (response) {
        $('.collapse').collapse('show');
        $('#job-summ-panel').html(response.jobs)
    },                               
}); 

作业首次加载页面时最初为空,因此不会显示任何内容。我不知道如何刷新/重新加载 div 并使用新的响应数据再次执行 foreach。

最佳答案

有两种方法可以实现这一目标。首先是服务器端生成,其次是客户端应用程序。

1。服务器端内容生成

您可能希望将页面的该部分移动到不同的 Blade 模板。然后通过 AJAX 调用,您可以重建页面并将输出发送到浏览器。例如:

路线定义

Route::post("generateList", "Partials@generateList");

部分模板定义

Partials\loopContainer.blade.php

<div class="col-lg-6 collapse" >
    <div class="job-summ-panel" id="job-summ-panel" >
        @foreach($jobs as $job)
            {{$job['active']}}
        @endforeach
    </div>
</div>

您的部分内容生成器

<?php 

    namespace App\Http\Controllers;

    use Illuminate\Http\Request;

    class Partials extends Controller {

    public function generateList(Request $request){
        // generate data from the parameters again
        $input = $request->input('job_ref');
        $generatedData = GenerateDataFromJobRef($input);
        return View::make("partials/loopContainer", ["jobs" => $generatedData]);
    }
?>

客户端刷新

$.ajax({
    method: "POST",
    url: '/generateList',
    data: {
        job_ref: marker.getCustomData('job_ref'),
    },
    success: function (response) {
        $('.collapse').collapse('show');
        $('#job-summ-panel').html(response)
    },                               
}); 



2。客户端内容应用程序

路由定义

Route::post("generateList", "Partials@generateList");

您的部分内容生成器

<?php 

    namespace App\Http\Controllers;

    use Illuminate\Http\Request;

    class Partials extends Controller {

    public function generateList(Request $request){
        // generate data from the parameters again
        $input = $request->input('job_ref');
        $generatedData = GenerateDataFromJobRef($input);
        return json_encode(["data" => $generatedData]);
    }
?>

客户端刷新

$.ajax({
    method: "POST",
    url: '/generateList',
    data: {
        job_ref: marker.getCustomData('job_ref'),
    },
    success: function (response) {
        $('.collapse').collapse('show');            
        var appendString = "";
        for(var i = 0; i < response.data.length; i++){
            appendString += "<div>" + response.data[i].info + "</div>";    
        }
        $('#job-summ-panel').empty().append(appendString);
    },                               
}); 



关于ajax - ajax后重新加载laravel foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46765438/

相关文章:

javascript - 存在的函数被列为 "undefined"

javascript - 如何从异步调用返回响应?

ajax - 如何在通过 ajax 加载页面后显示 Twitter/Facebook/Google+ 按钮?

laravel - Laravel 中的 Blade 评论导致 apache 崩溃

php - 是 Blade 模板的元保留名称吗?

Laravel,显示 dd() 结果而没有 die -> d(),dump()?

laravel - 如何使用 Laravel Blade 模板将变量传递到布局?

javascript - 使用 JQuery 阻止重定向 - 我做错了什么?

php - 覆盖 Laravel Mailer 的 setGlobalTo

php - 使用 2D 阵列在 Blade 中打印表格