2016-07-15 57 views
0

我在我的HTML中有一個表單。這種形式的需要文本輸入和一個圖像:通過Ajax將多個部分的表單數據轉換爲PHP

HTML

<form class="article_properties_form" action="" method="POST" enctype="multipart/form-data">    
         <textarea style="display: none" class="inputNumber" name="pages"></textarea> 
         <p>Image</p> 
         <input style="padding: 0px" type="file" name="image"> 
          <p>Subtitle</p> 
          <input type="text" name="subtitle"> 

          <p>Text</p> 
          <textarea name="text" rows="4"></textarea> 
          <input id="properties_btn" type="submit" value="Submit/Update"> 
         </form> 

這種形式將通過Ajax提交:

的jQuery/AJAX

  $('body').on('submit', '.article_properties_form', function(e) { 
      e.preventDefault(); 

      if ($(this).valid()) { 
      $.ajax({ 
         type: 'POST', 
         url: '', 
         data: $(this).serialize(), 
         success: function() { 

         } 
        }); 
      } 

     }); 

數據將被中繼到PHP:

PHP

if (isset($_POST["subtitle"], $_POST["pages"], $_POST["text"], $_POST["image"])) 
    { 
       //Some SQL 
    } 

的形式成功地工作,當我除去ENCTYPE和輸入類型= 「圖像」 屬性。這意味着我必須在圖像屬性上做錯了什麼。我無法弄清楚如何通過Ajax將此表單轉換爲PHP,並且圖像屬性保持不變。我怎樣才能做到這一點?

回答

1

您需要保留enctype並捕獲文件值,您需要使用$_FILES['image']來獲取「圖像」值。

在AJAX代碼,使用:

data: new FormData(this), 
processData: false, 
contentType: false 
+0

我試着做$ _FILES [ 「形象」]在PHP獲取圖像價值,但它仍然無法工作。我不認爲問題出在我的PHP上,我認爲問題在於用Ajax – user2896120

+0

@ user2896120更新了答案。 –

+0

謝謝!這有效,但我也取得了成功:function(data){Some code},但即使在表單提交時,某些代碼也沒有初始化...您認爲什麼是錯誤的? – user2896120

0

試試這個:

var fd=new FormData(document.getElementById("YOUR_FORM_ID")); 
$.ajax({ 
type:"POST", 
url:"", 
data:fd, 
enctype:'multipart/form-data', 
processData:false, 
contentType:false, 
success:function(data){console.log(data);}, 
error:function(err){console.log(err);} 
}); 
相關問題