尽管响应为200,但ajax运行错误

时间:2017-10-16 10:29:12

标签: javascript jquery ajax laravel laravel-5

我在网页上有多个上传内容,我正在整理它,所以:

这是我的js:

$(".img").change(function () {
        var form = $(this).closest('form');
        getPath(form);
    })
    deleteButton();
    copyGalleryData();
});

function getPath(form) {
    var name = $(form).attr('name');
    submitImage(form, name);
}
var path_to_delete;

function submitImage(form, name) {
    var url = '/image/upload';
    var form_data = new FormData($(form)[0]);
    submit(name);
    form_data.append('img', $(form).children(".img"));
    $.ajax({
        url: url,
        data: form_data,
        dataType: 'json',
        async: true,
        type: 'post',
        processData: false,
        contentType: false,
        success: function (data) {
            console.log(data);
            $(form).children('.image-container').append('<img id="image" name=' + name + '" src="' + data + '" />')
            $(".imageDelete").attr('data', data);
            alerts();
            var deleting = false;
            success(name, deleting, data);
            $('.messages').html('<div class="alert alert-success">Image Uploaded!<div>');
        },
        error: function (data) {
            alerts();
            fail();
            $('.messages').html('<div class="alert alert-danger">File type not supported! Use files with image extension only!</div>');
        },
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
}

和控制器:

class ImageController extends Controller
{
    use S3;
    public function upload(ImgRequest $request)
    {
        if ($request->hasFile('img')) {
            $this->imageEntity();
            return response()->json($path);
        }
        if ($request->hasFile('coverUpload')) {
            $this->imageCover();
        }
    }
    public function imageEntity()
    {
        $s3Path = config('app.path', public_path());
        $image = Input::file('img');
        Log::info('Retrieving Image', ['image' => $image]);
        $filePath = 'public/logo/' . time() . '.' . $image->getClientOriginalExtension();
        $path = $s3Path . $filePath;
        $this->S3Store($filePath, $image);
        $session = session()->get('key');
        try {
            $update_image = Entity::find($session);
            $update_image->logo = $path;
            $update_image->save();
            Log::info('Succesfully saved logo for', ['entity_id' => $session]);
            return response()->json($path);
        } catch (Exception $e) {
            Log::error('Images:', ['message' =>$e->getMessage(), 'entity_id' => $session]);
        }
    }
    public function imageCover()
    {
        $s3Path = config('app.path', public_path());
        $image = Input::file('coverUpload');
        Log::info('Retrieving Cover', ['image' => $image]);
        $filePath = 'public/cover/' . time() . '.' . $image->getClientOriginalExtension();
        $path = $s3Path . $filePath;
        $this->S3Store($filePath, $image);
        $session = session()->get('key');
        try {
            $image = new Images;
            $image->path = $path;
            $image->cover = true;
            $image->entity_id = $session;
            $image->save();
            Log::info('Succesfully saved logo for', ['entity_id' => $session]);
            return $path;
        } catch (Exception $e) {
            Log::error('Images:', ['message' =>$e->getMessage(), 'entity_id' => $session]);
        }
    }

现在有趣的是响应是200,但是它是空的(定义了$ path)并且ajax触发了错误:代码的一部分而不是成功。我检查了日志,尝试成功:

  

[2017-10-16 11:22:01] local.INFO:检索图片{“image”:“[object]   (Illuminate \ Http \ UploadedFile:/ tmp / phpHPchM4)“} [2017-10-16   11:22:01] local.INFO:添加到S3 [2017-10-16 11:22:05] local.INFO:   成功添加到S3 [2017-10-16 11:22:05] local.INFO:   成功保存了{“entity_id”:“324”}

的徽标

有人可以帮我解决这个问题吗?

更新::

我更新了控制器,以便函数返回$ path,而main函数返回响应,但是由于某种原因,它说$ path是未定义的,如何将数据从返回传递给返回的控制器?< / p>

0 个答案:

没有答案