Ajax请求不起作用,不确定原因

时间:2018-03-19 10:01:10

标签: php ajax laravel

我试图在屏幕上显示预览后通过javascript发送图像,我拒绝使用dropzone,plupload或任何javascript库,因为我只想要一个简单的功能......

var finput;
var fileReader;
var fd; //formdata...

$(function(){
    fileReader = new FileReader;
    fileReader.onload = function(e) {
        var img = document.createElement("img");
        img.src = fileReader.result;  //display the image on the screen...
        img.height = 200;
        $('#pimgbox').html(img);       
       //enable the image button... // $('#pimagebox').html(img);
       $('#pimgbtn').removeAttr('disabled', 'disabled').removeClass('btn-alert').addClass('btn-primary');

    }
});

当您点击提交按钮时

$('#pimgbtn').bind('click', function(e){   

    //initialize the formdata...

    fd = new FormData();    //initialize the formdata..
    fd.append('pimgupl', finput.files[0]);   //s
    //alert(fd);

    $('#pimgldr').css('display','block');
    $(this).attr('disabled', 'disabled').removeClass('btn-primary').addClass('btn-alert')

    if(fileReader.result != null){

////////////// beginning of ajax call...

         var settings = {
                type: "POST",
                url: "/user/setprofilepix",
                data: fd
            }; //end of setting..

            $.ajax(settings)
            .done(function (response) {
               alert(response);
               resetPUplButtons();
               //close modal...
               $('#profimgwin').modal('hide');
            })
            .fail(function (jqXHR, textStatus, error) {
                alert('error sending file...' + error);
                resetPUplButtons();
            });

      /////////////////////////end of ajax calls.. 

    }else{
        alert('you havent selected an image yet..');
        resetPUplButtons();
    }

});

并且在我的laravel usercontroller上我有这个方法试图上传图像,但拒绝工作..

 public function setProfilePix(Request $request){
    $file = $request->file('pimgupl');
    $code = Auth::user()->profile->usrcode;
    $targetDir = public_path() . DS . 'userdata'.DS.'ppix';

    $newname = $targetDir.DS.strtolower($code).md5($code).'_'.time() .'.jpg';
   // echo $newname;
    //exit;
    $file->move($targetDir, $newname);

    echo 'saved';
}

我在输出面板中一直收到此错误.. enter image description here 和418行是ajax操作,我已经尝试了一切,但似乎没有任何工作......谢谢。我还在我的verifyCsrfToken.php中添加了一个例外路由 - 中间件,但它仍然无法运行..我在这一点上感到困惑,任何帮助。

1 个答案:

答案 0 :(得分:0)

在jQuery中尝试从

更改设置
var settings = {
                type: "POST",
                url: "/user/setprofilepix",
                data: fd
            }; 

var settings = {
                type: "POST",
                url: "/user/setprofilepix",
                data: fd,
                processData: false,
                contentType: false,
            };