2013-08-06 3 views
0

Я использую CodeIgniter. Я использую форму ajax для загрузки изображений. Мой Главный код,Ajax форма вызова без выбора файла в codeigniter

<div id="new_photo"> 
<?php echo form_open_multipart('upload/upload1','id="my_new"');?> 
<input type="file" name="userfile" size="20" /> 
<input type="submit" value="upload" id="new_photo_upload" name="new_photo_upload" />  
</form> 
</div> 

И мой Сценарий,

<script> 
    $(document).ready(function() { 
     $('#my_new').ajaxForm(function() { 
      var baseurl = "<?php echo base_url(); ?>"; 
       $.ajax({ 
        type: "POST", 
        url: baseurl+"upload/new_photo", 
        success: function(r) { 
        $('#new_photo').html(r); 
        }, 
        error: function(){ 
         location.reload(true); 
        } 
       }); 
     }); 
    }); 

</script> 

Вот, если я загрузить изображение и нажмите upload, это загрузка с помощью AJAX и загрузка загрузки/new_photo как правильно.

Но проблема в том, что без выбора изображения, если я нажму кнопку «Загрузить», загрузите upload/new_photo. Я не хочу этого. Если я выберу любое изображение, тогда только оно будет отправлено.

Помощь Me ...

+0

Вы можете просто сделать событие jQuery на кнопке и остановить действие по умолчанию с помощью preventDefault, проверить, выбран ли файл и продолжить ли сценарий соответствующим образом –

ответ

0

Дайте идентификатор на вход файла:

<input type="file" name="userfile" id="userfile" size="20" /> 

Изменения в ЯШ:

$(document).ready(function() { 
    $('#my_new').ajaxForm(function() { 
     var baseurl = "<?php echo base_url(); ?>"; 
      $.ajax({ 
       type: "POST", 
       url: baseurl+"upload/new_photo", 
       beforeSubmit: function() { 
        if($("#userfile").val() == ""){ 
         alert('Please select a file to upload!'); 
         return false; 
        } 
       }, 
       success: function(r) { 
       $('#new_photo').html(r); 
       }, 
       error: function(){ 
        location.reload(true); 
       } 
      }); 
    }); 
}); 

beforeSubmit Посмотрите на который проверяет входные данные.