使用jQuery.form通过ajax将输入[type = file]发送到CodeIgniter

时间:2013-02-12 14:15:24

标签: javascript jquery ajax forms codeigniter

以下是基本html表单:

<?php echo form_open( 'controller' ); ?>  
  <fieldset>
    <input type="text" name="field_name_1" value="<?php echo set_value('field_name_1'); ?>"/>
    <input type="file" name="field_name_2" value="<?php echo set_value('field_name_2'); ?>"/>
    // more dynamically added form fields
    <input type="submit" />
  </fieldset>
<?php echo form_close(); ?>

我希望input[type=file]通过ajaxjQuery Form Plugin发送到其控制器(与其他输入类型一起)。

下面的代码适用于除input[type=file]以外的所有其他输入类型。

<script src="http://malsup.github.com/jquery.form.js"></script> 

var options = {
    url: "<?php echo site_url('new_account/validate_new_account'); ?>",
    type: 'POST',
    dataType: 'json',
    success: function(data) {

      if (data.length === 0) {
        alert('Form successfully submitted!');
      } else {
        alert("Some fields weren't answered successfully. Please answer them.");
        // attach server-side form validations to respective fields
        $.each(data, function(key, value){
          var container = '<div class="error">'+value+'</div>';
          $('.form-element input[name="'+key+'"]').after(container);
        });
      }

    }
};

$('#main-submit').click(function(e) {
  $('#professional-form').valid(); // jQuery validate
  $('#professional-form').ajaxSubmit(options);  
  e.preventDefault(); // redirect to other place only if successful form 
});

其他输入字段已成功发送,但 CodeIgniter仍未收到文件。你们知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

通常不能通过标准的ajax发布文件上传。但是,有一些允许异步上传文件的工具:

您无法使用标准jquery帖子执行此操作的原因是因为出于安全原因,javascript无法读取本地文件。这些工具使用各种解决方案(例如隐藏的iframe,Flash或HTML5技术)来解决限制,具体取决于浏览器上的可用内容。

答案 1 :(得分:0)

可以通过jjery.form.js通过ajax上传文件,如以下链接所示:

http://malsup.com/jquery/form/#file-upload