2017-06-07 3 views
0

ファイルがまだ入力されていない場合は別のajaxを実行します。しかし、まだフォームアクションを投稿しています。CodeIgniterでAJAXを使用してファイルをアップロードする値がnullでも定義されていなくても実行されます

はここに私のビューのコードです:

<form method="POST" id="quiz_file" action="<?php echo site_url('home/upload_quiz/' . $kelas);?>" enctype="multipart/form-data"> 
    <input name="filequiz" id="filequiz" type="file" /> 
</form> 

そして、これが私のJSです:私はちょうどそれを実行すると

$('#submitquiz').on('click', function(event) { 
    var inputFile = $('input[name=filequiz]'); 
    document.getElementById('submitquiz').disabled = true; 
    var fileToUpload = inputFile[0].files[0]; 
    // make sure there is file to upload 
    if (undefined != fileToUpload) 
    { 
    var uploadURI = $('#quiz_file').attr('action'); 
    var formData = new FormData(); 
    formData.append("file", fileToUpload); 
    alert('if'); 
    $.ajax({ 
     url: uploadURI, 
     type: 'post', 
     data: 
     { 
      formData : formData, 
      asid : asid_quiz, 
      value : cmbValue 
     }, 
     processData: false, 
     contentType: false, 
     success: function(data) 
     { 

     } 
    }); 
} 
else 
{ 
    alert('else'); 
    $.ajax(
    {   
    type: 'POST', 
    url:'<?php echo site_url("home/assignment_score"); ?>', 
    data: 
    { 
     asid : asid_quiz, 
     value : cmbvalue, 
     kelas : <?php echo $kelas;?>, 
     dataType:"JSON" 
    }, 
    success: function(data) 
    { 
     console.log('asdasd' + data); 
     alert('Quiz score submitted'); 
    } 
}); 

は、それが示す警告メッセージ "他に"。しかし、フォームアクションからアップロードアクションを実行します。

これはどうして起こる可能性がありますか?どのようにアップロードアクションの実行を停止し、 'else'側で別のajaxリクエストを実行するのですか?

+0

あなたはjquery.formプラグインを使用することはでき提出する必要があり、その後、AJAXを使用してデータを送信している場合、私はあまりにもあなたを好む、http://malsup.com/jquery/form /#file-upload –

+0

'#submitquiz'が' type = "submit"の入力である場合、送信ボタンの "default"アクションを防ぐ必要があります。例えば 'event.preventDefault()' –

+0

はあなたですか?私のポイントを得る? –

答えて

0

submitquizボタンのタイプがsubmitの場合は、clickイベントを送信しないようにするか、input typeボタンに変更する必要があります。

あなたが入力ボタンを使用する代わりに

$('#submitquiz').on('click', function(event) { 
event.preventDefault(); 
+0

この方法を使用した後も私はもう一度続けることができますか? –

+0

はい、あなたはこのメソッドを下に追加するか、ボタンタイプ –

+0

を変更することができます。私はevent.preventDefaultを使用した後、私は再びアクションを実行し続けたいと思います。どうやってするの ? –

関連する問題