2016-04-21 43 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