2012-03-24 4 views
0

私はフォームを持っていて、それをajaxでphpスクリプトに送信したいのですが、チェックされていて送信できない場合はchceckboxの値を送信しませんアバター付きのファイル。したがって、フォームはテキスト入力からのみ値を送信しますが、チェックボックスやファイルからは送信しません。何が間違っているのかお手伝いできますか? フォーム:チェックボックスとファイルの値をajaxでフォームから送信する方法

<form action='' id='form1' method='post' name='form1' ENCTYPE='multipart/form-data'> 
<input type='text' name='name' id='name' value=''> 
<input type='text' name='age' id='age' value=''> 
<input type='text' name='hobby' id='age' hobby=''> 
<input type="checkbox" name="chkPHP" id="chkPHP" value="checked"> 
<input type='file' name='avatar' id='avatar' value='insert avatar' SIZE='30' accept=''> 
<input type='submit' name='submit' id='submit' value='submit'> 
</form> 

スクリプトがフォームから値を送信します

あなたのAJAX呼び出しで
<script src="jquery.js" type="text/javascript" charset="utf-8"></script> 
<script> 
$(document).ready(function(){ 
    $('#submit').click(function() { 

     $('#waiting').show(0); 
     $('#form1'); 
     $('#error').hide(0); 

     $.ajax({ 
      type : 'POST', 
      url : 'pksZpacuj.php', 
      dataType : 'json', 
      data: { 
       name: $('#name').val(), 
       age: $('#age').val(), 
       hobby: $('#hobby').val(), 
       chkPHP: $('#chkPHP').val(), 
       avatar: $('#avatar').val() 
      }, 
      success : function(data){ 
       $('#waiting').hide(0); 
       $('#error').removeClass().addClass((data.error === true) ? 'error' : 'success') 
        .html(data.msg).show(0); 
       if (data.error === true) 
        $('#form1'); 
      }, 
      error : function(XMLHttpRequest, textStatus, errorThrown) { 
       $('#waiting').hide(0); 
       $('#error').removeClass().addClass('error') 
        .text('There was an error.').show(0); 
       $('#form1'); 
      } 
     }); 

     return false; 
    }); 
}); 
</script> 

答えて

1

、それだけで別途の代わりに、各値のdata: $('#form1').serialize()を送信する方が簡単かもしれません。

FYIあなたが送ったファイルは$_FILESの配列になり、PHPスクリプトの$_POSTではなくなります。

+0

おかげで、それはチェックボックスに問題を解決しました。 :)ファイルは$ _FILES配列にあり、まだ動作しません。しかし、おそらくこの問題をCheviのファイルリンクで解決してください。 –

関連する問題