0

基本的な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(); ?>

jQuery Form Pluginを介してinput[type=file](他の入力タイプと一緒に)コントローラーに送信したいと思います。ajax

以下のコードは、を除く他のすべての入力タイプで機能し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はまだファイルを受信しません。これを修正する方法を知っていますか?

4

2 に答える 2

0

通常、ファイルのアップロードは、標準のajax投稿では不可能です。ただし、ファイルの非同期アップロードを可能にする特定のツールがあります。

標準のjquery投稿を使用してこれを実行できない理由は、セキュリティ上の理由からjavascriptがローカルファイルを読み取れないためです。これらのツールは、ブラウザで利用できるものに応じて、非表示のiframe、Flash、HTML5テクニックなどのさまざまなソリューションを使用して制限を回避します。

于 2013-02-12T14:17:17.647 に答える
0

次のリンクに記載されているように、jquery.form.jsを使用してajaxを介してファイルをアップロードできます。

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

于 2013-12-19T12:54:04.567 に答える