web-dev-qa-db-ja.com

Dropzone JSでサーバー応答(JSON)からエラーを呼び出す方法

ユーザーが割り当てを超えた場合、ユーザーのアップロードを拒否するアップローダーがあります。応答はJSONであり、次のとおりです。

{msg: "Upload limit reached", status: "error", code: "403"}

Dropzone JSオプションは次のとおりです。

Dropzone.options.uploadDropzone = {
    paramName: "file1", 
    maxFilesize: 200, 
    maxThumbnailFilesize: 10,
    success: function(file, response){
      ????
  }
};

アップローダーでユーザーにエラーを表示するには、successの応答をどうすればよいですか?

18
MK Yung

大丈夫、ソースから抽出するだけで、次のように動作します:

success: function(file, response){
  if(response.code == 501){ // succeeded
    return file.previewElement.classList.add("dz-success"); // from source
  }else if (response.code == 403){  //  error
    // below is from the source code too
    var node, _i, _len, _ref, _results;
    var message = response.msg // modify it to your error message
    file.previewElement.classList.add("dz-error");
    _ref = file.previewElement.querySelectorAll("[data-dz-errormessage]");
    _results = [];
    for (_i = 0, _len = _ref.length; _i < _len; _i++) {
      node = _ref[_i];
      _results.Push(node.textContent = message);
    }
    return _results;
  }
}
18
MK Yung

Dropzoneにはエラー検出が組み込まれています。これを行うだけです:

mydropzone = new Dropzone("#mydropzone",{
    url: "/dropzone",
    addRemoveLinks : true,
    maxFilesize: 2.0,
    maxFiles: 100,
    error: function(file, response) {
        if($.type(response) === "string")
            var message = response; //dropzone sends it's own error messages in string
        else
            var message = response.message;
        file.previewElement.classList.add("dz-error");
        _ref = file.previewElement.querySelectorAll("[data-dz-errormessage]");
        _results = [];
        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
            node = _ref[_i];
            _results.Push(node.textContent = message);
        }
        return _results;
    }   
});
9
spitz

次のようにできます:

success: function(file, response, action) {
    // PHP server response
    if(response == 'success') // Validate whatever you send from the server
    {
        this.defaultOptions.success(file);
    }
    else
    {
        this.defaultOptions.error(file, 'An error occurred!');  
    }
}
7
CIRCLE

in PHP side:

    header("HTTP/1.0 400 Bad Request");
    echo "Error uploading file";

そしてjQuery側で:

        error: function(response){
            alert(response.xhr.responseText);
        }
2
Wajdi Jurry