2015-03-03 57 views
0

獲得使用PHP上傳的圖片,我需要通過Ajax如何通過AJAX

我的表單域獲得使用PHP上傳的圖片,

<form action="#" method="post" id="rent_details" name="rent_details" enctype="multipart/form-data"> 
Upload Image :<input type="file" name="fileToUpload" id="fileToUpload"> 
type:- <select name="spottype" id="spottype"> 
    <option value="xxx">xxx</option> 
    <option value="yyy">yyy</option> 
    <option value="zzz">zzz</option> 
</select> 
<input type="button" id="bidm" name="bidm" value="Next"/> 
</form> 

In ajax call I have following code :- 

    $.ajax({ 
     url: './api/addspot.php', 
     data: $('#rent_details').serialize(), 
     type: 'POST', 
     contentType: false,     
     success: function(data) { 
      alert(data); 
     }, 
     error: function(xhr, status, error) { 
     alert(xhr.responseText); 
     } 
    }); 

在這裏,我在阿賈克斯成功函數只拿到了spottype值但我需要獲得 所有表單字段的值。

+0

'serialize'不適用於文件字段。嘗試從'$('#fileToUpload')。val()' – 2015-03-03 08:09:34

+0

$('#fileToUpload')。val()獲得文件,它給出空的結果。 – 2015-03-03 08:12:40

+0

看看這個http://stackoverflow.com/questions/425095/submit-form-using-ajax-and-jquery – cb0 2015-03-03 08:25:18

回答

1
<form action="#" method="post" id="rent_details" name="rent_details" enctype="multipart/form-data"> 
Upload Image :<input type="file" name="fileToUpload" id="fileToUpload"> 
type:- <select name="spottype" id="spottype"> 
    <option value="xxx">xxx</option> 
    <option value="yyy">yyy</option> 
    <option value="zzz">zzz</option> 
</select> 
<input type="submit" id="bidm" name="bidm" value="Next"/> 
</form> 

$(document).ready(function(){ 
    $("#rent_details").submit(function(e){ 
     e.preventDefault(); 
     $.ajax({ 
       method:'POST', 
       url: "./api/addspot.php", 
       data: new FormData(this), 
       processData: false, 
       contentType: false 
       }).done(function(data) { 
        console.log(data); 
      }); 
    }); 
}); 

而且您請求的頁面上的名字得到。使用$ _FILES上傳文件。

+0

formData = new FormData($('form')[0]); – 2015-03-03 08:46:25

+0

它將與(this)一起使用。因爲如果在提交表單上工作。 – Jitendra 2015-03-03 09:08:25

-1

嘗試使用此方法獲取文件字段的值:

$('input[type=file]').val() 

此代碼工作

+0

我得到了錯誤, ReferenceError:輸入未定義 – 2015-03-03 08:17:47

+0

嘗試放置單引號。更新我的回答 – 2015-03-03 08:22:35

+0

對不起,這也是行不通的... – 2015-03-03 08:24:56

1

這將工作。

$('#rent_details').on('submit',(function(e) { 
    e.preventDefault(); 
    var formData = new FormData(this); 

    $.ajax({ 
     url: './api/addspot.php', 
     data: formData, 
     type: 'POST', 
     contentType: false, 
     processData: false,    
     success: function(data) { 
     alert(data); 
     }, 
     error: function(xhr, status, error) { 
     alert(xhr.responseText); 
     } 
    }); 

})); 
+0

formData = new FormData($('form')[0]); – 2015-03-03 08:45:45

0

您需要使用FormData();

知道這段代碼在IE9及更低版本上無效。

這是用於多文件上傳。

$(document).on('click', '#bidm', function(e) { 
     e.preventDefault(); 

     var request = new FormData(this); 
     var my_files = $(this).closest('form').find('#fileToUpload').files; 

     $.each(my_files, function(j,file) { 
`    request.append('fileToUpload['+j+']', file); 
     }); 

     $.ajax({ 
      url: './api/addspot.php', 
      data: request, 
      dataType: "json", 
      contentType: false, 
      processData: false, 
      enctype: 'multipart/form-data',    
      success: function(data) { 
       alert(data); 
      }, 
      error: function(xhr, status, error) { 
       alert(xhr.responseText); 
      } 
     }); 
    }); 
0

需要使用FormData()作爲ajax數據。它把所有的表單變量傳遞給了ajax。然後在ajax函數中,您可以檢索文件名和臨時文件名,並將圖像文件保存到需要保存的文件夾中。