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

时间:2019-04-11 18:36:31

标签: laravel laravel-5 laravel-4 laravel-5.2 laravel-5.1

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个数据

3 个答案:

答案 0 :(得分:1)

要确定请求是否为ajax请求,可以对注入到控制动作中的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();

答案 1 :(得分: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);
             }

        });
    });
    });

答案 2 :(得分: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']);
 }
}