Home » Php » Laravel 4 how to return multiple view data with ajax and json?

Laravel 4 how to return multiple view data with ajax and json?

Posted by: admin November 29, 2017 Leave a comment

Questions:

Basically I’m trying to make a popup using this ajax:

$.ajax({
    type: 'GET'
    url: 'news/read'
    dataType: 'json'
    cache: false
    timeout: 10000
}).done (msg) ->
    $("article#pop-read").empty().html msg.view
    processing = false
    window.history.pushState
        path: msg.url
        , "", msg.url
    false

And I’m returning a view value and it’s url with this:

$data = json_encode(array(
        'view' => View::make('layouts.read'),
    'url' => 'news/read/2013/11/24/test-title-seperate-with-dash'
));
return $data;

This all works really well except that I can’t get the view value from laravel (it returns Object object in javascript). But it returns nicely if I directly write it like return View::make('layouts.read'). Why is that?

Additionally (don’t have to answer, not primary question), the back button on my browser doesn’t work when I use pushState, is it a bug?

Answers:

You may try this

$data = json_encode(array(
    'view' => (String)View::make('layouts.read'),
    'url' => 'news/read/2013/11/24/test-title-seperate-with-dash'
));
return $data;

Also, you can use

View::make('layouts.read')->render();
View::make('layouts.read')->__toString();

Also, Laravel provides Response::json() method for same reason (instead of json_encode).