Файл не загружен и выдает сообщение «Вы не выбрали файл для загрузки», когда я использую метод jquery ajax для вызова функции контроллера CI - PullRequest
0 голосов
/ 22 ноября 2011

Файл не загружен и выдает ошибку «Вы не выбрали файл для загрузки», когда я использую метод jquery ajax для вызова функции контроллера CodeIgniter.Так помогите мне исправить эту ошибку и загрузить файл с помощью ajax

//My View : 
<form  id="frm" name="frm" enctype="multipart/form-data">
<input type="file" name="userfile" id="userfile" size="20"/> 
<input type="button" value="upload" id="upload" name="upload"/>
</form>

//calling button live method from view
$('#upload').live("click", function ()
{
//calling jquery ajax
$.ajax({
type: "POST",
url:"../user/usercontroller/do_upload", //calling controller function
cache: true,
success: function(data4)
{ 
alert('in ajax'+data4);
},datatype: "json"
});
});

//My Controller:
function do_upload()
{
$upload_dir ='./uploads/';
$config['upload_path'] = realpath($upload_dir);
$config['overwrite'] = TRUE;    
$config['allowed_types'] = '*';
$config['encrypt_name']  = true;
$config['remove_spaces']  = TRUE;
$this->load->library('upload', $config);
if (!$this->upload->do_upload('userfile'))
{
print_r($this->upload->display_errors());
}    
else
{
print_r($this->upload->data());
}            
}

Ответы [ 2 ]

1 голос
/ 09 января 2013

Вы не можете загружать файлы, используя Ajax.Если вы хотите, чтобы он выглядел как ajax, установите целевой атрибут формы как скрытый iFrame.

0 голосов
/ 22 ноября 2011

Вам необходимо установить данные в вашем $.ajax() вызове.Прямо сейчас вы отправляете пустое сообщение.

Попробуйте использовать что-то вроде этого:

$.post("../user/usercontroller/do_upload", //calling controller function
  $('#frm').serialize(),
  function(data4){ 
    alert('in ajax'+data4);
  },
  "json"
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...