我想用laravel5.2用这段代码开发简单的ajax
此oneline_help.php视图
<html>
<head>
<title>Ajax Example</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
function getMessage(){
$.ajax({
type:'POST',
url:'/getmsg',
data:'_token = <?php echo csrf_token() ?>',
success:function(data){
$("#msg").html(data.msg);
}
});
}
</script>
</head>
<body>
<div id = 'msg'>This message will be replaced using Ajax.
Click the button to replace the message.</div>
<?php
echo Form::button('Replace Message',['onClick'=>'getMessage()']);
?>
</body>
</html>
这是路线
Route::get('/ajax','front@support');
Route::post('/getmsg','Hello@index');
这是前面的@support
public function support()
{
return view('online_help', array('title' => 'Welcome', 'description' => '', 'page' => 'online_help','subscribe'=>"",'brands' => $this->brands));
}
这是Hallo @index控制器
public function index(){
echo"i in in hello index";
$msg = "This is a simple message.";
return response()->json(array('msg'=> $msg), 200);
}
按钮出现但是点击它时,文字不会改变。 请告诉我为什么以及如何解决它。
答案 0 :(得分:0)
以下是我的AJAX工作示例....
您不需要在ajax请求中添加token
,将其设置为全局,因此每次ajax请求都会自动添加CSRF token
。
在 HTML Head 部分添加此元标记
<meta name="csrf-token" content="<?php echo csrf_token() ?>">
然后在Javascript标记中添加此代码。这将在每个ajax请求中添加CSRF令牌。
注意这个必需的jquery文件应该包含在你的页面中。一旦包括从文件中调用此方法。
<script type="text/javascript">
var csrf_token = $('meta[name="csrf-token"]').attr('content');
$.ajaxSetup({
headers: {"X-CSRF-TOKEN": csrf_token}
});
</script>
我修改了你的方法....
<script>
function getMessage(){
$.ajax({
type:'POST',
url:'/getmsg',
data:'_token = <?php echo csrf_token() ?>', //remove this line
dataType:'json', // you skipped this line
beforeSend:function(){
alert('loading....'); //this will show loading alert
},
success:function(data){
$("#msg").html(data.msg);
},
error:function(){
alert('loading error...')
}
});
}
</script>