1

我正在使用以下代码:

 var frontPic = e.target.files[0]
 var frontPicName = frontPic.name
 var salonId=$("#salonId").val()
 upload = new Upload(frontPicName, salonId)
 upload.resize(frontPic)

调用以下代码

function Upload(filename, salonId){

    var form = new FormData()
        form.append("filename", filename)
        form.append("salonId", salonId)
};

Upload.prototype.resize = function(file){
    $.canvasResize(file,
    {
        width: 400,
        height: 0,
        crop: false,
        quality: 100,
        callback: function (data)
        {
            alert(data)
            // Add file data
            this.form.append("file", $.canvasResize('dataURLtoBlob', data));
            $('body').css("background", "url("+data+")")
        }
    });
}

我的 alert(data) 似乎工作正常,所以实际的调整大小操作看起来很好。

但是我收到了this.form is undefined该行的错误this.form.append("file", $.canvasResize('dataURLtoBlob', data));

什么是正确的语法?

4

2 回答 2

2

您的代码中有两个问题:

  1. form声明为构造函数中的局部变量,而不是对象的属性。

  2. this在你的回调函数中不是指upload对象。您必须将其存储在局部变量中。

function Upload(filename, salonId){

    this.form = new FormData()
    this.form.append("filename", filename)
    this.form.append("salonId", salonId)
};

Upload.prototype.resize = function(file){

    var self = this;

    $.canvasResize(file,
    {
        width: 400,
        height: 0,
        crop: false,
        quality: 100,
        callback: function (data)
        {
            self.form.append("file", $.canvasResize('dataURLtoBlob', data));
            $('body').css("background", "url("+data+")")
        }
    });
}
于 2013-03-04T02:44:37.203 回答
1

this可能适用于其他东西。您应该在调用之前创建一个引用$.canvasResize

Upload.prototype.resize = function(file){
    var self = this;
    $.canvasResize(file,

然后替换thisself.

于 2013-03-04T02:43:32.673 回答