нажмите на кнопку проверить тип файла, если файл в порядке, отправьте некоторые данные на сервер - PullRequest
0 голосов
/ 14 сентября 2010

У меня есть форма со слишком большим количеством полей.То, что я пытаюсь сделать, это сначала выполнить некоторую проверку с использованием 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 Ответ

1 голос
/ 14 сентября 2010

Вы не можете достоверно проверить тип файла по его имени файла. На компьютерах Mac и Linux существуют другие механизмы определения типа файла, отличные от расширения, и даже в Windows у вас нет доступа к сопоставлению расширения файла с типом.

Хотя может быть целесообразно напечатать предупреждение, если вы не распознаете тип файла по его расширению (например, появляется в change в поле загрузки файла), вы не должны блокировать загрузку, когда это происходит.

Кроме этого, вызов ajax() должен работать, однако:

  • у вас есть случайные обратные слеши (я предполагаю, что опечатка копирует и вставляет);
  • вы не возвращаете false при запуске запроса ajax(). Если #saveData является кнопкой отправки формы, это означает, что форма будет по-прежнему отправляться по щелчку, и эта навигация отменяет вызов ajax();
  • Я действительно не знаю, что это должно делать:

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

    Отрицательные табличные индексы - это нестандартное расширение IE; почему вы хотите удалить поле из последовательности табуляции?

Если это не так, добавьте error: function() { ... } к аргументам, чтобы проверить, действительно ли вызов возвращает что-то функциональное, и проверьте консоль JS на наличие ошибок в общем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...