"/photos", "method" => "p-6ren">
gpt4 book ai didi

php - Laravel 5 中的 Ajax 表单与文件一起提交

转载 作者:行者123 更新时间:2023-12-01 03:11:22 25 4
gpt4 key购买 nike

我正在尝试在 Laravel 5 中实现文件上传。但首先要发送数据,例如简单的字符串。我的表格:

    {!!Form::open(["url"=>"/photos", "method" => "post", "files"=>true, "onsubmit"=>"send();return false;"])!!}    
{!!Form::text("title", null, ["class"=>"form-control"])!!}
{!!Form::submit("Send", ["class"=>"btn btn-primary", "id" => "submitForm"])!!}
{!!Form::close()!!}

我的发送功能

function send() {
var formData = new FormData(this);
$.ajax({ url: "/photos",
method: 'POST',
data: formData,
processData: false,
contentType: false,
cache: false,
success: function(data) {
console.log(data);
},
error: function(data) {
}
});
}

我的路线:

Route::post("/photos", "PhotosController@store");

我的商店功能

public function store()
{
$data = \Illuminate\Support\Facades\Request::all();
return $data;
}

我有一个空数据!通过 Formdata 没有接收到任何内容,但是如果我将参数从 formData 更改为 {text: "Hola"},那么我会在服务器的回答中看到这一点,但通过文本我以后无法上传照片。我究竟做错了什么 ?为什么我收到空的表单数据?谢谢

最佳答案

由于我遇到了同样的问题并找到了解决方案,因此我想将其发布在这里。

首先,您必须使用 var formData = $(this).serializeArray(); 来获取表单数据,而不是 var formData = new FormData(this); .

根据文档,Laravel 将自动返回带有 422 状态代码的 HTTP 响应,其中包括验证错误的 JSON 表示形式。

完整的ajax调用:

//#ajax-form is the id of your form.
$("#ajax-form").submit(function(e)
{
var postData = $(this).serializeArray();
var formURL = $(this).attr("action");

$.ajax(
{
url : formURL,
type: "POST",
data : postData,
success:function(data)
{
console.log(data);
//data: return data from server
},
error: function(data)
{
console.log(data.responseJSON);
//in the responseJSON you get the form validation back.
}
});
e.preventDefault(); //STOP default action
e.unbind(); //unbind. to stop multiple form submit.
});

如果你想通过AJAX上传文件我建议你阅读this 。希望这有帮助!

祝你编码愉快:-)

关于php - Laravel 5 中的 Ajax 表单与文件一起提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28658457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com