javascript - 在ajax中调用上传功能后图像未上传

标签 javascript jquery ajax nude.js

我正在研究一个图像上传表单,它将在 nudejs 的帮助下验证上传的图片是否包含裸体。脚本。
如果图片不包含裸体,则会上传。
上传和检查裸体功能运行良好,但问题是自从检查裸体功能“onImageClick()”返回以来,我没有找到链接这两种方法的方法 'undefined' 所以我无法检查它是真还是假,以便通过 $.ajax 调用上传功能。

这是代码:

$(document).ready(function (e) {
    $("#uploadimage").on('submit',(function(e) {
        e.preventDefault();
        //return onImageClick('previewing'); //previewing is the id of the image in my html file
        //if(onImageClick('previewing')) return;
        var rn = onImageClick('previewing');
        console.log("rn: "+rn); //always get undefined 
        $("#message").empty();
        $('#loading').show();

        $.ajax({
          url: "ajax_php_file.php",
          type: "POST",            
          data: new FormData(this),
          contentType: false,      
          cache: false,            
          processData:false,       
          success: function(data) {
             $('#loading').hide();
             $("#message").html(data);
          }
      });
}));

// Function to preview image after validation
$(function() {
    $("#file").change(function() {
        $("#message").empty(); // To remove the previous error message
        var file = this.files[0];
        var imagefile = file.type;
        var match = ["image/jpeg","image/png","image/jpg"];
        if(!((imagefile==match[0]) || (imagefile==match[1]) || (imagefile==match[2]))) {
           $('#previewing').attr('src','no-preview.png');
           $("#message").html("<p id='error'>Please Select A valid Image File</p>"+"<h4>Note</h4>"+"<span id='error_message'>Only jpeg, jpg and png Images type allowed</span>");
           return false;
        }
        else
        {
            var reader = new FileReader();
            reader.onload = imageIsLoaded;
            reader.readAsDataURL(this.files[0]);
         }
     });
});

function imageIsLoaded(e) {
    $("#file").css("color","green");
    $('#image_preview').css("display", "block");
    $('#previewing').attr('src', e.target.result);
    $('#previewing').attr('width', '250px');
    $('#previewing').attr('height', '230px');
};
//check nudity function
function onImageClick(node) {
    nude.load(node);
    // Scan it
    nude.scan(function(result){ 
        console.log(result ? "Nudity found in " + node + "!" : "Not nude");
                console.log("returned value is:",result);
                return result;
    });
}
});

编辑:我根据@Amir 的回答编辑代码,他提到了一个我之前没有注意到的重要点。
现在我可以在没有裸露的情况下触发上传功能,但是即使触发了 ajax 调用中的成功功能,图像也没有上传:

    success: function(data)   
    {
    $('#loading').hide();
    $("#message").html(data);
    }

这是新代码:

$(document).ready(function (e) {
$("#uploadimage").on('submit',(function(e) {
e.preventDefault();
//call check nudity function
onImageClick('previewing');
//check nudity function
function onImageClick(node) {
    nude.load(node);
    // Scan it
    nude.scan(function(result){ 
        console.log(result ? "Nudity found in " + node + "!" : "Not nude");
                console.log("returned value is:",result);
                if(result){
                    alert("conatain nudity!!");
                }
      else{
            $("#message").empty();
            $('#loading').show();
                $.ajax({
            url: "ajax_php_file.php", 
            type: "POST",             
            data: new FormData(this), 
            contentType: false,       
            cache: false,             
            processData:false,        
            success: function(data)   
            {
            $('#loading').hide();
            $("#message").html(data);
            }
                });
              }
    });
};

}));

// Function to preview image after validation
$(function() {
$("#file").change(function() {
$("#message").empty(); // To remove the previous error message
var file = this.files[0];
var imagefile = file.type;
var match= ["image/jpeg","image/png","image/jpg"];
if(!((imagefile==match[0]) || (imagefile==match[1]) || (imagefile==match[2])))
{
$('#previewing').attr('src','no-preview.png');
$("#message").html("<p id='error'>Please Select A valid Image File</p>"+"<h4>Note</h4>"+"<span id='error_message'>Only jpeg, jpg and png Images type allowed</span>");
return false;
}
else
{
var reader = new FileReader();
reader.onload = imageIsLoaded;
reader.readAsDataURL(this.files[0]);
}
});
});
function imageIsLoaded(e) {
$("#file").css("color","green");
$('#image_preview').css("display", "block");
$('#previewing').attr('src', e.target.result);
$('#previewing').attr('width', '250px');
$('#previewing').attr('height', '230px');
};

});

最佳答案

nude.scan 是异步的,所以你应该传递一个回调。 像这样的东西:

nude.scan(function (result) { /* your logic according to the result */ })

关于javascript - 在ajax中调用上传功能后图像未上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32923684/

相关文章:

javascript - 消息在需要所有数据之前发送,这意味着它发送了几条消息,所有消息中的数据都相同

javascript - AngularJS:Ng-repeat in groups of n elements

javascript,等待某事为真,然后运行操作

javascript - 具有两个 ajax 调用的单个函数

javascript - 制作一个 div 滚动以显示位于下方的主要内容

javascript - 从链接打开时,导航栏隐藏标题

c# - 错误 : Invalid postback or callback argument

jquery - 在页面底部加载内容并将其放置到正确的位置

php - ajax php总是返回null

php - ajax在发布后从另一个页面检索数据