跳到主要內容

發表文章

目前顯示的是 11月, 2018的文章

ajax使用FormData物件上傳檔案-教學撰寫:徐嘉裕Neil hsu

如果是php表單要上傳物件只需要在form裡面加上enctype="multipart/form-data然後使用input type="file"就能吧檔案陣列中的五個屬性值一起上傳透過$_FILES["file"]來接收變數,然後使用php的製作圖檔或是檔案上傳程式來做後續處理,但如果是ajax表單是沒有form可以使用的,必須透過js取值然後用ajax來處理,好朋友一定認為這樣就能取到type="file"的值了。 var $upfile= $('input[name=file]').val(); 抱歉這樣只能抓到檔案路徑,檔案屬性是抓不到的,所以即使變數送出去也無法建立檔案,用js要抓取檔案屬性的方法必須使用 FormData 物件才行,請看以下說明: //html結構 <input class="form-control" id="blockimg" type="file" > <button id="upload">Upload</button> //$.ajax  $('#upload').on('click', function() {     var file_data = $('#blockimg').prop('files')[0];    //取得上傳檔案屬性     var form_data = new FormData();  //建構new FormData()     form_data.append('file', file_data);  //吧物件加到file後面                                    $.ajax({                 url: 'upload.php',                 cache: false,                 contentType: false,

JS接收ajax.php回傳變數值的簡易方法:徐嘉裕Neil hsu

JS如要接收ajax.php回傳變數值,最常用的方法就是使用dataType: 'json',然後在ajax.php使用陣列方式來傳遞變數,像是下面這樣 $res['1']=123; $res['2']=456; echo json_encode($res);exit; 但最近想出一個更簡單的方法來讓js來接收ajax.php回傳變數值,也不需要使用到json,只要吧變數用 , 串接起來就好了,例如: $text="".$var1.",".$var2.",".$var3.",".$var4.",".$var5.""; echo $text; 這樣在JS的$.ajax的success: function(response) {}裡面加上 var $response_arr = response.split(' , '); //切割陣列 $var1=$response_arr[0]; $var2=$response_arr[2]; $var3=$response_arr[3]; $var4=$response_arr[4]; $var5=$response_arr[5]; 吧原本串接的5個變數切割成5個列陣,這樣就能輕鬆的接收ajax.php回傳的變數值了,感覺比json好用,有需要的朋友可以參考看看! 教學撰寫: 徐嘉裕 Neil hsu