我正在尝试通过ajax将数据提交到数据库。无需使用ajax,提交文章页面可以正常工作。我添加console.log()
只是为了查看是否发生了任何事情,但是却出现了此错误:
POST http:// localhost / laravel-5 / public / articles /
create
500(内部服务器错误)
我的代码有什么问题?是JavaScript还是控制器?
编辑:我正在这 laravel.log
C:\ xampp \ htdocs \ laravel-5 \ vendor \ laravel \ framework \ src \
Illuminate \ Foundation \ Http \ Middleware \
VerifyCsrfToken.php:53中的异常’Illuminate \ Session \ TokenMismatchException’
Route
Route::resource('articles', 'ArticlesController');
Controller
public function store(Requests\ArticleRequest $request)
{
$article = new Article($request->all());
Auth::user()->articles()->save($article);
$response = array(
'status' => 'success',
'msg' => 'Article has been posted.',
);
return \Response::json($response);
}
jQuery
$(document).ready(function() {
$('#frm').on('submit', function (e) {
e.preventDefault();
var title = $('#title').val();
var body = $('#body').val();
var published_at = $('#published_at').val();
$.ajax({
type: "POST",
url: 'http://localhost/laravel-5/public/articles/create',
dataType: 'JSON',
data: {title: title, body: body, published_at: published_at},
success: function( data ) {
$("#ajaxResponse").append(data.msg);
console.log(data);
}
});
});
View
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<h1>Write a New Article</h1>
<hr>
{!! Form::open(['url' => 'articles', 'id' => 'frm']) !!}
<p>
{!! Form::label('title', 'Title:') !!}
{!! Form::text('title') !!}
</p>
<p>
{!! Form::label('body', 'Body:') !!}
{!! Form::textarea('body') !!}
</p>
<p>
{!! Form::label('published_at', 'Date:') !!}
{!! Form::input('date', 'published_at', date('Y-m-d'), ['class' => 'form-control']) !!}
</p>
<p>
{!! Form::submit('Submit Article', ['id' => 'submit']) !!}
</p>
{!! Form::close() !!}
<h3 id="ajaxResponse"></h3>
@if($errors->any())
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="{{ URL::asset('assets/js/ArticleCreate.js') }}"></script>
});
当您通过POST向资源控制器发出请求时,它会自动调用存储方法:
Verb Path Action Route Name
----------------------------------
POST /articles store articles.store
因此,您只需要将ajax网址更改为:
$.ajax({
type: "POST",
url: 'http://localhost/laravel-5/public/articles',
当您需要发送会话令牌时,可以添加一个全局元标记,例如您的网站:
<meta name="csrf-token" content="{{ csrf_token() }}">
然后,只需通过ajax的标头添加令牌:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
如果您使用的是Form::open()
函数(LaravelCollective),它将添加一个隐藏的输入,其标记为name
_token
。因此,您可以删除元标记并像这样编辑ajax的标头:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('[name="_token"]').val()
}
});
问题内容: 我正在尝试为这个工作中的项目学习AJAX。我有一个网站加载病人正在服用的药物。 我递归调用此AJAX函数,以便它将附加一个包含单种药物和7天历史记录的新表。我在使代码在FF和IE中执行时遇到问题。在chrome中效果很好。我有显示xmlhttp.status的警报,这是我得到的: xmlhttp.status == 500(内部服务器错误)。 我注释掉了所有递归,因此将其范围缩小到了这
我想用ajax向laravel中的控制器发送post请求。ajax请求发送两个输入参数,我希望controller在数据库中找到包含第一个参数的列,然后使用第二个输入参数设置name属性。但是我在控制台500中有这个错误消息(内部服务器错误)。 Ajax功能: 路线: 控制器功能: 而且我导入csrf无处不在,因为上次当我做AJAX调用我有这个csrf的问题,下面的代码已经修复了我的问题,但现在不
问题内容: 我有一个将数据发送到控制器的ajax请求,它收集我的下拉菜单的值 错误是 错误的回应是 更新 我的表格 我的ajax请求 我的控制器 它给500内部错误..其笨拙的帮助 问题答案: 您的post方法必须具有属性。删除属性或在视图中添加令牌 并将其传递回ajax函数 请注意,该参数在操作方法中不是必需的
问题内容: 这是我在laravel 5中测试的ajax(请参阅下文) 和触发链接 和我的路线 但是当我在google chrome中运行控制台时,它给了我错误,并且未返回预期的响应“在laravel 5中返回’成功!ajax’;” POST http://juliver.laravel.com/test 500(内部服务器错误) 我的代码有什么问题/问题?我缺少什么? 问题答案: 虽然这个问题存在
问题内容: 大家好,我在laravel和ajax中使用我的评论系统时遇到问题。实际上,它仅适用于php,但我遇到了ajax问题。 这是错误消息: 状态码:500内部服务器错误。并且错误显示:1/3 SQLSTATE [23000]:违反完整性约束:1048列’post_id’不能为null。 我正在编辑模态中的注释,我可以创建一个新注释,但是问题是使用ajax编辑它。 JS代码: 这是HTML:
我试着对我的问题进行研究,但一直未能解决它。我正试图在点击时发布Ajax帖子。我已经读到最流行的问题是由于csrf_代币,但我相信我已经妥善处理了? 我不断地发现这个错误: 这是我的密码。。。 我的csrf令牌元标记位于我的主标记顶部。刀身php文件 路线: js函数 } 我的控制器: