【问题标题】:laravel 8 ajax how to submit modal form to controllerlaravel 8 ajax如何将模态表单提交给控制器
【发布时间】:2022-08-19 17:53:17
【问题描述】:

我正在尝试将数据发送到控制器以进行更新。但是,我无法通过 Ajax 发送提交表单,我单击按钮提交,即使我正确说明了一切,也没有任何反应。

这是我的观点:

<!-- Modal -->
                                            <div class=\"modal fade\" id=\"edit-model\" tabindex=\"-1\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\">
                        <div class=\"modal-dialog\">
                            <div class=\"modal-content\">
                                <div class=\"modal-header\">
                                    <h5 class=\"modal-title\" id=\"exampleModalLabel\">QRcode</h5>
                                    <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>
                                </div>
                                <div class=\"modal-body\">
                                
                                   <form action=\"\" method=\"POST\" id=\"updateEditForm\" enctype=\"multipart/form-data\">
                                                @csrf
                                                <input type=\"hidden\" id=\"id\" name=\"id\" value=\"\">
                                                                    <div class=\"form-group row\">
                                                            <label for=\"facName\" class=\"col-sm-2 col-form-label\">Faculity Name</label>
                                                            <div class=\"col-sm-10\">
                                                            <select id=\"faculity_name\" name=\"faculity_name\" class=\"form-control\" vlaue=\"\">
                                                            <option value=\"FKEKK\">FKEKK</option>
                                                                <option value=\"FKE\">FKE</option>
                                                                <option value=\"FKM\">FKM</option>
                                                                <option value=\"FKP\">FKP</option>
                                                                <option value=\"FTMK\">FTMK</option>
                                                                <option value=\"FPTT\">FPTT</option>
                                                                <option value=\"PPB\">PPB</option>
                                                                <option value=\"IPTK\">IPTK</option>
                                                            </select>
                                                            <span class=\"text-danger\" id=\"fac-input-error\"></span>
                                                            </div>
                                                        </div>
                                                        
                                                            <div class=\"form-group row\">
                                                            <label for=\"docType\" class=\"col-sm-2 col-form-label\">Document Type</label>
                                                            <div class=\"col-sm-10\">
                                                            <select id=\"document_type\" name=\"document_type\" class=\"form-control\" vlaue=\"\">
                                                            <option value=\"Past years exams\">Past years exams</option>
                                                                <option value=\"Past years quizes\">Past years quizes</option>
                                                                <option value=\"Past years assignments\">Past years assignments</option>
                                                                <option value=\"Past years mini projects\">Past years mini projects</option>
                                                                <option value=\"Past years final projects\">Past years final projects</option>
                                                            </select>
                                                            <span class=\"text-danger\" id=\"doc-input-error\"></span>
                                                            </div>
                                                        </div>
                                                        
                                                        <div class=\"form-group row\">
                                                            <label for=\"uploadFile\" class=\"col-sm-2 col-form-label\">Upload File</label>
                                                            <div class=\"col-sm-10\">
                                                            <input type=\"file\" class=\"form-control-file\" name=\"file\" id=\"file\">
                                                            <span class=\"text-danger\" id=\"file-input-error\"></span>
                                                            </div>
                                                        </div>

                                                        <div class=\"form-group row\">
                                                            <label for=\"subName\" class=\"col-sm-2 col-form-label\">Subject Name</label>
                                                            <div class=\"col-sm-10\">
                                                            <input type=\"text\" class=\"form-control\" id=\"subject_name\" name=\"subject_name\" vlaue=\"\">
                                                            <span class=\"text-danger\" id=\"sub-input-error\"></span>
                                                            </div>
                                                        </div>

                                                        
                                                        
                                                        <div class=\"form-group row\">
                                                            <label for=\"desc\" class=\"col-sm-2 col-form-label\">Description</label>
                                                            <div class=\"col-sm-10\">
                                                            <textarea class=\"form-control\" id=\"description\" name=\"description\" rows=\"3\" vlaue=\"\"></textarea>
                                                            </div>
                                                        </div>

                                                        <div class=\"form-group row\">
                                                            <div class=\"col-sm-10\">
                                                            <button type=\"submit\" id=\"btn-edit\" class=\"btn btn-primary\">Save</button>
                                                            </div>
                                                        </div>
                                                </form>
                                                
                               </div>
                                </div>
                            </div>
                        </div>

阿贾克斯:

$(document).ready(function () {

$.ajaxSetup({
    headers: {
            \'X-CSRF-TOKEN\': $(\'meta[name=\"csrf-token\"]\').attr(\'content\')
        }
});

$(\'#updateEditForm\').submit(function(e) {
  e.preventDefault();

  var id = $(\"#id\").val();
  let formData = new FormData($(this)[0]);

  var idd = $(\"#updateFiles input[name=id]\").val()
   
  alert(idd)
   
    $.ajax({
      url: \'/fileEdit/\' + $id,
      type: \"POST\",
      data: {
        formData
      },
      contentType: false,
      processData: false,
      success: function (response) {
        
       
        alert(response.message);
          $(\'#edit-model\').modal(\'hide\');
      },
      error: function(response){
        console.log(response)
        
    }
  });
});


$(\'body\').on(\'click\', \'#editFiles\', function (event) {

    event.preventDefault();
    var id = $(this).data(\'id\');
    $.get(\'file/\' + id + \'/edit\', function (data) {
         $(\'#userCrudModal\').html(\"Edit file\");
         $(\'#btn-edit\').val(\"Edit file\");
         $(\'#edit-model\').modal(\'show\');
         $(\'#id\').val(data.data.id);
         $(\'#faculity_name\').val(data.data.faculity_name);
         $(\'#document_type\').val(data.data.document_type);
         $(\'#file\').val(data.data.file);
         $(\'#subject_name\').val(data.data.subject_name);
         $(\'#description\').val(data.data.description);
     })
});

}); 

路线:

Route::post(\'/fileEdit/{id}\', [utemfilesharing::class, \'edit\'])->name(\'file.edit\');

控制器:

 public function edit(Request $req, $id)
{
    $validate = Validator::make($req->all(),[
        \'faculity_name\' => \'required\',
        \'document_type\' => \'required\',
        \'subject_name\' => \'required\',
        \'description\' => \'required\'
        ]);

    $fileId = File::find($id);
    if($fileId) {
        $fileId->faculity_name = $req->input(\"faculity_name\");
        $fileId->document_type = $req->input(\"document_type\");
        $fileId->subject_name = $req->input(\"subject_name\");
        $fileId->description = $req->input(\"description\");
        
        if($req->hasFile(\'file\'))
        {
        $path = storage_path(\'app/public/uploads/\'. $fileId->name);
        if(File::exists($path)){
            File::delete($path);
        }
        $file = $req->name(\'file\');
        $extension = $file->getClientOriginalName();
        $filename = time().\'_\'.$extension;
        $file->move(\'app/public/uploads/\', $fileName);
        $fileId->name = $filename;
        }
        $fileId->save();
        return response()->json([\'success\'=>200,
        \'message\'=>\'File Updated Successfully\']);
    }
    else{
        return response()->json([\'success\'=>200,
        \'message\'=>\'ID Not Found\']);
    }
        

}

请注意,数据包括文件,由于提交按钮不起作用,因此不确定此代码的错误在哪里。任何帮助将不胜感激

  • \“我点击按钮提交,没有任何反应\”- 所以在AJAX请求之前你甚至看不到你放在那里的alert(idd)?浏览器控制台说什么,有什么错误吗?您是否验证了整个就绪处理程序函数是否已执行?
  • 什么都没有显示。我刚刚收到此警告消息:主线程上的同步 XMLHttpRequest 已被弃用,因为它对最终用户的体验产生不利影响。如需更多帮助xhr.spec.whatwg.org

标签: javascript ajax file-upload laravel-8 ajaxform


【解决方案1】:

家伙!

试着去做

$('#updateEditForm').submit(function(e) {

为了那个原因

$('#btn_edit').submit(function(e) {

【讨论】:

    猜你喜欢
    • 2023-02-04
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 2020-08-14
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多