【发布时间】:2018-01-30 12:54:44
【问题描述】:
您好,我正在尝试使用表单数据创建帖子,因为我有一个文件输入来上传图像。我真的很难让上传文件正常工作。当我尝试创建帖子时收到错误 500,并显示消息
SQLSTATE[HY000]:一般错误:1364 字段'title'没有默认值(SQL:插入
posts('updated_at','created_at')值(2018-01-30 12:31) :18, 2018-01-30 12:31:18)。
我不确定默认值是什么意思。我检查了我的$fillables,标题肯定在那里。当我在顶部的控制器中运行以下代码时,它会通过:
$request->all();
return response()->json('passed');
但是当我的控制器中有以下内容时,它会给出错误:
public function create(Request $request)
{
Post::create($request->all());
$response = [
'response' => 'Post Created Successfully',
'error' => 'Something went wrong'
];
return response()->json($response);
}
这是我的 HTML:
<div class="container">
<div class="row">
<h1>Create your post</h1>
<div class="form-group">
<label for="title">Title</label>
<input type="text" name="title" id="title" class="form-control">
</div>
<div class="form-group">
<label for="post">Post</label>
<textarea name="post" rows="8" cols="80" id="post" class="form-control"></textarea>
</div>
<div class="form-group">
<label for="image">Add image</label>
<input type="file" name="image" id="image" class="form-control">
</div>
<input type="submit" name="submit" value="Submit Post" id="submit" class="btn btn-primary">
</div>
</div>
AJAX:
<script>
$(document).ready(function() {
$("#submit").on("click", function(e) {
e.preventDefault();
var formData = new FormData();
var fileData = $('#image').prop('files')[0];
var title = $('#title').val();
var post = $('#post').val();
formData.append('fileData', fileData);
formData.append('title', title);
formData.append('post', post);
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr("content")
}
});
$.ajax({
url:'/post/create/create',
type: "POST",
data: {
formData: formData
},
processData: false,
contentType: false,
dataType: 'json',
success:function(response){
toastr.success(response.response);
},
error: function(error){
toastr.error(error.error)
}
});
});
});
</script>
这是我的带有填充物的 Post 模型:
protected $fillable = ['title', 'post', 'user_id', 'uploadImage'];
【问题讨论】:
-
请显示
dd($request->all());的结果 -
它显示一个空数组'[]'
-
这意味着你没有得到 formData
-
formdata 可能有什么问题?
-
以
data: formData传递数据