Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Laravel中通过jQueryAjax发布文件和数据_Javascript_Php_Jquery_Ajax_Laravel 5.2 - Fatal编程技术网

Javascript 如何在Laravel中通过jQueryAjax发布文件和数据

Javascript 如何在Laravel中通过jQueryAjax发布文件和数据,javascript,php,jquery,ajax,laravel-5.2,Javascript,Php,Jquery,Ajax,Laravel 5.2,我在使用AJAX时遇到问题。我环顾四周,但似乎找不到任何有助于我构建代码的方法 现在输入数据库的数据字段很好,但是我还想添加一个文件上载(配置文件图片),但是当我查看networking选项卡时,它不会出现在表单数据中。目前我并不太担心控制器本身,但是如何获得将文件发送到控制器的AJAX请求呢 如果有人知道我如何解决这个问题,我会非常感激 谢谢 AccountController.php 试试看 FormData对象允许您编译一组要发送的键/值对 使用XMLHttpRequest。它主要用于发送

我在使用AJAX时遇到问题。我环顾四周,但似乎找不到任何有助于我构建代码的方法

现在输入数据库的数据字段很好,但是我还想添加一个文件上载(配置文件图片),但是当我查看networking选项卡时,它不会出现在表单数据中。目前我并不太担心控制器本身,但是如何获得将文件发送到控制器的AJAX请求呢

如果有人知道我如何解决这个问题,我会非常感激

谢谢

AccountController.php

试试看

FormData对象允许您编译一组要发送的键/值对 使用XMLHttpRequest。它主要用于发送形式 数据,但可以独立于表单使用,以便传输 键控数据。传输的数据与表单的格式相同 如果表单的编码类型为 已设置为多部分/表单数据


使用$(“#account update”).serialize()您可以将其扩展为OP为什么应该使用FormData吗?它允许您使用XMLHttpRequest(ajax)发送键/值对,还可以发送表单数据,我认为这是OP想要做的最直接的方式:)
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
use App\Http\Requests;
use Illuminate\Support\Facades\Auth;
class AccountController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        return view('Account.index');
    }
    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }
    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }
    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }
    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }
    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request)
    {
        $this->validate($request, [
            'name' => '',
            'email' => '',
            'telephone' => '',
            'job_title' => '',
            'profile_description' => '',
            'education' => '',
        ]);
        User::find(Auth::user()->id)->update([
            'name' => $request->get('name'),
            'email' => $request->get('email'),
            'telephone' => $request->get('telephone'),
            'job_title' => $request->get('job_title'),
            'profile_picture' => $request->get('profile_picture'),
            'profile_description' => $request->get('profile_description'),
            'education' => $request->get('education'),
        ]);
        $userImage = User::find(Auth::user()->id);
        if (!empty($request->file('profile_picture')) && $request->file('profile_picture')->isValid()) {
            $fileName = md5(time() . pathinfo($request->file('profile_picture')->getClientOriginalName(), PATHINFO_FILENAME)) . '.' . pathinfo($request->file('profile_picture')->getClientOriginalName(), PATHINFO_EXTENSION);
            $request->file('profile_picture')->move('profile-pictures', $fileName);
            $userImage->update([
                'profile_picture' => $fileName,
            ]);
        } else {
            $fileName = $request->get('old-image');
        }
        $userImage->update([
            'profile_picture' => $fileName,
        ]);
    }
<form class="form-horizontal" id="account-update" role="form" method="POST" action="{{ url('account.update', auth()->user()->id) }}" enctype="multipart/form-data">
  {{ csrf_field() }}
  <div class="form-group">
    <label for="name" class="col-sm-2 control-label">Name</label>

    <div class="col-sm-10">
      <input name="name" type="text" class="form-control" id="name" placeholder="Name">
    </div>
  </div>
  <div class="form-group">
    <label for="email" class="col-sm-2 control-label">Email</label>

    <div class="col-sm-10">
      <input name="email" type="email" class="form-control" id="email" placeholder="Email">
    </div>
  </div>

  <div class="form-group">
    <label for="telephone" class="col-sm-2 control-label">Contact Number</label>

    <div class="col-sm-10">
      <input name="telephone" type="telephone" class="form-control" id="telephone" placeholder="+(44)754 5635 950">
    </div>
  </div>

  <div class="form-group">
    <label for="job_title" class="col-sm-2 control-label">Job Description</label>

    <div class="col-sm-10">
      <input name="job_title" type="text" class="form-control" id="job_title" placeholder="Web Developer">
    </div>
  </div>

  <div class="form-group">
    <label for="profile_description" class="col-sm-2 control-label">About Me</label>

    <div class="col-sm-10">
      <textarea name="profile_description" class="form-control" id="profile_description" placeholder="Tell us about yourself..."></textarea>
    </div>
  </div>

  <div class="form-group">
    <label for="education" class="col-sm-2 control-label">Education</label>

    <div class="col-sm-10">
      <input name="education" type="text" class="form-control" id="education">
    </div>
  </div>

  <div class="form-group">
    <label for="profile_picture" class="col-sm-2 control-label">Profile Picture</label>

    <div class="col-sm-10">
      <input name="profile_picture" type="file" class="form-control" id="profile_picture">
    </div>
  </div>

  <div class="form-group">
    <div class="col-sm-offset-2 col-sm-10">
      <button type="submit" class="btn send-btn">Submit</button>
    </div>
  </div>
</form>
<script>
$(document).ready(function(){
  $('#account-update').on('submit', function(e) {
    e.preventDefault();

    $.ajax({
      url: '{{ route('account.update', auth()->user()->id) }}',
      enctype: 'multipart/form-data',
      method: "PUT",
      data: {
        'name':$('input[name=name]').val(),
        'email':$('input[name=email]').val(),
        'telephone':$('input[name=telephone]').val(),
        'job_title':$('input[name=job_title]').val(),
        'profile_description':$('textarea[name=profile_description]').val(),
        'education':$('input[name=education]').val(),
        'profile_picture': $('file[name=profile_picture]').val(),
        '_token': $('input[name=_token]').val()
      },
      success: function(data){
        console.log(data);
      }
    });
    return false;
  });
});
</script>
$('#account-update').on('submit', function(e) {
    e.preventDefault();
    var formData = new FormData();

    // other inputs
    formData.append("userfile", $('file[name=profile_picture]').files[0]);

    //append some non-form data also
    formData.append('name',$('input[name=name]').val()),
    $.ajax({
        type: "POST",
        url: postDataUrl,
        data: formData,
        processData: false,
        contentType: false,
        dataType: "json",
        success: function(data, textStatus, jqXHR) {
           //process data
        },
        error: function(data, textStatus, jqXHR) {
           //process error msg
        },
});