2016-04-05 6 views
0

Я пытаюсь выводить ajax успеха обратного вызова в целях:Laravel 5: получить ответ АЯКС в представлении

Контроллер:

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 

class AjaxTestController extends Controller 
{ 
    public function ajax() 
    { 
     $nomi = array(); 

     $nomi[0]['name'] = "alex"; 
     $nomi[0]['surname'] = "zambonin"; 

     $nomi[1]['name'] = "ciccio"; 
     $nomi[1]['surname'] = "pasticcio"; 

     return view('testAjax')->with('nomi',$nomi); 

    } 
} 

Вид:

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 
     <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> 
     <meta name="description" content=""> 
     <meta name="author" content=""> 

     <title>Laravel</title> 

     <link rel="stylesheet" href="{{ URL::asset('assets/stylesheets/frontend.css') }}"> 

    </head> 
    <body> 
     @foreach ($nomi as $nome) 
      {{ $nome['name'] }}<br/> 
     @endforeach 
    </body> 

    <script src="{{ URL::asset('assets/javascript/frontend.js') }}"></script> 
    <script> 
     $.ajax({ 
      url: 'testajax', 
      dataType: 'json', 
      type: 'GET', 
      success: function(data) { 
       alert(data); 
      } 
     }) 
    </script> 

</html> 

я могу получить json данные корректно отображаются на странице html, но я не могу получить это в предупреждении javascript. Кроме того, у меня ошибка 404 на консоли firefox; см. это image

Как заставить его работать? Thanks Alex

+0

Вы зарегистрировали маршрут для 'testajax'? Похоже, сценарий не нашел такого адреса. – KazikM

ответ

2

Вы получаете 404, потому что URL/testajax не существует. Вам нужно сначала создать маршрут для этого. Тогда ответ от контроллера должен быть ответ JSON, например, так:

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 

class AjaxTestController extends Controller 
{ 
    public function myFancyWebsite() 
    { 
     return view('testAjax'); 
    } 

    public function ajaxResponse() 
    { 
     $nomi = array(); 

     $nomi[0]['name'] = "alex"; 
     $nomi[0]['surname'] = "zambonin"; 

     $nomi[1]['name'] = "ciccio"; 
     $nomi[1]['surname'] = "pasticcio"; 

     return response()->json($nomi); 
    } 
} 

Теперь ваш запрос Ajax должен указывать на тот метод, который просто возвращает ответ в формате JSON. Но вам нужно сначала создать маршрут в route.php:

Route::get('somepage', '[email protected]'); 
Route::get('testajax', '[email protected]'); 
+0

Спасибо! Он работал над редактированием 'response() -> json ($ nomi);' в 'return response() -> json ($ nomi)' – alzambo

Смежные вопросы