2016-04-21 66 views
2

我在裏面有一個表單和一個輸入類型文件。ajax提交:數據庫重複輸入

<form id='imageform' method='post' enctype='multipart/form-data' action='php/exec/add-message-image-exec.php' style='clear:both'> 
    <div id='imageloadstatus' style='display:none'><img src='assets/loader.gif' alt='Uploading....'/></div> 
    <div id='imageloadbutton'> 
     <div class='file-field input-field'> 
      <div class='btn'> 
       <span>Upload</span> 
       <input type='file' name='file' id='photoimg'/> 
      </div> 
      <div class='file-path-wrapper'> 
       <input class='file-path validate' type='text'> 
      </div> 
     </div> 
    </div> 
</form> 

它會在輸入文件中附加圖像時執行,並且ajax會自動處理並將其保存到數據庫中。

$(document).ready(function() { 
    $('#photoimg').on('change', function() { 
     var A = $('#imageloadstatus'); 
     var B = $('#imageloadbutton'); 

     $('#imageform').ajaxSubmit({target: '#preview', 
      beforeSubmit: function() { 
       A.show(); 
       B.hide(); 
      }, 
      success: function() { 
       A.hide(); 
       B.show(); 
      }, 
      error: function() { 
       A.hide(); 
       B.show(); 
      }}).submit(); 

    }); 
}); 

我的問題是,它提交圖像兩次,並將其保存到我的數據庫/表兩次。但是當我刪除腳本中的.submit();時,它只執行一次,但是有一個小模式窗口,並且每當我附加圖像/提交時都會出現另一個屏幕。

+0

什麼樣的窗口出現?你能展示截圖嗎? –

+1

這可能是你的ajax正在提交,然後表單實際上也在提交。在表單中,您可以嘗試刪除'action ='並添加'onsubmit =「return false;」'只是爲了檢查... – larsAnders

+0

這裏是我的示例圖像,當我刪除.submit();在腳本上以及刪除操作並添加onsubmit ='return false;'在形式中。 http://imgur.com/sn0DE39 – Duplicated

回答

2

刪除'action'並將其放入ajax POST請求中。

$(document).ready(function() { 
    $('#photoimg').on('change', function() { 
    var A = $('#imageloadstatus'); 
    var B = $('#imageloadbutton'); 

    $.ajax({ 
     url: 'php/exec/add-message-image-exec.php', 
     type: 'POST', 
     data: $('#imageform').serialize(), 
     beforeSubmit: function() { 
      A.show(); 
      B.hide(); 
     }, 
     success: function (data) { 
      //do something with data 
      //ex: console.log() 
      console.log(data); 
      A.hide(); 
      B.show(); 
     }, 
     error: function() { 
      A.hide(); 
      B.show(); 
     } 
    }); 
    }); 
}); 
+0

它說, SyntaxError:missing}在屬性列表 data:$('imageform')。serialize(); – Duplicated

+0

當我刪除序列化結束時的分號它刷新頁面後沒有錯誤,但當我提交圖像。它顯示$(...)。ajax不是一個函數。 – Duplicated

+0

**對不起**我的壞。 **我已經更新了我發佈的答案。** – graceth