laravel 5:在视图中获得 ajax 响应
laravel 5: get ajax response in view
我正在尝试将 ajax
成功回调输出到视图中:
控制器:
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>
我可以在 html 页面中正确显示 json 数据,但在 javascript 警报中无法显示。
另外,我在 firefox 控制台上出现 404 错误;看到这个 image
如何让它工作?
谢谢
亚历克斯
您将收到 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 请求应该指向该方法,该方法只是 returns 一个 JSON 响应。但是你需要先在 routes.php:
中创建一条路由
Route::get('somepage', 'AjaxTestController@myFancyWebsite');
Route::get('testajax', 'AjaxTestController@ajaxResponse');
我正在尝试将 ajax
成功回调输出到视图中:
控制器:
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>
我可以在 html 页面中正确显示 json 数据,但在 javascript 警报中无法显示。 另外,我在 firefox 控制台上出现 404 错误;看到这个 image
如何让它工作? 谢谢 亚历克斯
您将收到 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 请求应该指向该方法,该方法只是 returns 一个 JSON 响应。但是你需要先在 routes.php:
中创建一条路由Route::get('somepage', 'AjaxTestController@myFancyWebsite');
Route::get('testajax', 'AjaxTestController@ajaxResponse');