Laravel如何使用响应json返回视图数据(两次都有)?

问题描述 投票:0回答:3
public function index(Request $request)
{
    $search_book = $request->id;

    $proc=DB::select(DB::raw("SELECT * FROM BOOKS WHERE BOOKID = '$Search_book'")

    if ($search_book!="") {
        return response()->json($proc);
        return view('status.status',[ 
          'proc' => $proc
    ]);
}

如何返回2个数据

laravel laravel-5 laravel-4 laravel-5.2 laravel-5.1
3个回答
1
投票

要确定请求是否是ajax请求,可以在注入controll操作的ajax()对象上使用Request方法:

public function index(Request $request)
{
    $results = DB::table('books')
        ->where('bookid', $request->id)
        ->get();

    if ($request->ajax()) {
        return response()->json($results);
    }

    return view('status.status', [
       'proc' => $results
    ]);
}

我继续通过交换查询来为您修复查询中的SQL注入漏洞。它仍然可以通过使用Book模型而不是普通的数据库查询来改进,但这种方式也很好。


您可以通过替换left join来简化评论中的查询。只需将子查询作为基础,并使用right join processspj

DB::table('processtrans as pt')
    ->leftJoin('processmaster as pm', 'pm.pcm_id', '=', 'pt.pct_pcm_id')
    ->rightJoin('processspj as ps', 'ps.pc_id', '=', 'pt.pct_pc_id')
    ->where('pt.pct_pc_id', $request->id)
    ->select([
        'ps.*',
        'pm.pcm_bname',
        'pt.created_at',
        'pt.updated_at',
        'pt.pct_id',
        'pt.pct_leadtime',
        'pt.pct_pcm_id',
        'pt.pct_pc_id',
        'pt.pct_planfinishdate',
        'pt.pct_startdate',
        'pt.pct_status',
    ])
    ->get();

0
投票
$(document).ready(function(){
$("#dl_books").change(function()
    {
        var getValue=$(this).val();
        $.ajax({
            type: 'GET',
            url: '{{route('status')}}',
            data: {id:getValue},

            success:function(data)
            {
                //Json for value textbox
                $("#txtbookname").text(data[0].pcm_bname);
             }

        });
    });
    });

0
投票

只需将渲染视图保存在变量中并执行json响应:

public function index(Request $request) {
  $results = DB::table('books')
    ->where('bookid', $request->id)
    ->get();
if ($results) {
    $view = view('status.status', [
   'proc' => $results
        ])->render();

    return response()->json(['view'=> $view, 'proc' => '$results']);
 }
}
© www.soinside.com 2019 - 2024. All rights reserved.