onclick验证文件类型,如果文件好,则将一些数据发送到服务器

时间:2010-09-14 07:53:38

标签: jquery ajax

我有一个包含太多字段的表单。我想要做的是首先使用jquery进行一些验证;到目前为止工作正常。 我有一个事件处理程序“onclik”,它验证用户上传的文件类型,如果文件不是图像,则向用户显示一条消息。如果文件是好的,它应该将一些数据发送到服务器并等待响应。 到目前为止,一切对我来说都很好,但是ajax不起作用。请帮我 这是我的代码:

$(document).ready(function(){
  //$(\'#saveData\').bind(\'click\', function() {
    //$(\'#saveData\').live(\'click\', function() {
  $(\'#saveData\').click( function(){
   var ext = $("#articlePhoto").val().split(".").pop().toLowerCase();
   var allow = new Array("gif","png","jpg","jpeg","");
   if(jQuery.inArray(ext, allow) == -1) {
    $("div.fileType").html("some error message");
    $("div.fileType").attr("tabindex",-1).focus();
    return false;
   }
   else
   {
     $.ajax({
       type: "POST",
       url: url+"somefile.php",
       data: "item1=somedata&item2=others",
       success: function(data){
         alert(data); // doesn't work
       }
     });
   }
  });
 });

由于

1 个答案:

答案 0 :(得分:1)

您无法从文件名中可靠地检查文件类型。 Mac和Linux机器具有确定文件类型而不是扩展的其他机制,即使在Windows下,您也无权访问文件扩展名到类型的映射。

如果您无法识别其扩展名中的文件类型(例如,出现在文件上传字段的change上),则打印警告可能是合适的,但是当发生这种情况时,您不应阻止上传。 / p>

除此之外,ajax()调用应该有效:

  • 你有一些迷失的反斜杠(我假设有一个复制和粘贴错误);
  • 启动ajax()请求时,您没有返回false。如果#saveData是表单提交按钮,则表示该表单仍会在点击时提交,该导航会取消ajax()来电;
  • 我真的不知道应该做什么:

    $("div.fileType").attr("tabindex",-1).focus();
    

    否定tabindexes是非标准IE扩展;为什么要从标签序列中删除该字段?

如果不是这样,请在参数中添加error: function() { ... }以检查调用是否实际返回了一些功能,并检查JS控制台是否存在错误。