我正在嘗試執行可能無法完成的任務。我還沒有在互聯網上找到相同的場景。使用AJAX和PHP腳本的HTML上傳文件 - 幫助?
我有四個字段,只需點擊一下,就可以調用一個Javascript函數,它執行一個來自PHP文件的數據的AJAX調用。
這些字段最終將填滿數據庫中的一行,PHP將查詢新的一組數據,用戶將看到它。部分數據是用戶可以點擊並展開的圖像。
AJAX調用的工作原理,擴展圖像的工作原理,但通過上傳添加此圖像不會,從而打破了整個事情。
下面是HTML表單的一個片段:
Entry: <input type='text' id='entry' />
Stop: <input type='text' id='stop' />
Final: <input type='text' id='final' />
Chart: <input type='file' id='chart' value='Get Chart'/>
<input type='button' onclick='addResult()' value='Add' />
的addResult()處理這樣的事情:
var entry = document.getElementById('entry').value;
var stop = document.getElementById('stop').value;
var final = document.getElementById('final').value;
var chart = document.getElementById('chart').value;
var queryString = "?entry=" + entry + "&stop=" + stop + "&final=" + final + "&chart=" + chart + "&loggedIn=true";
ajaxRequest.open("GET", "addResult.php" + queryString, true);
沒什麼特別的,只是把數據並將其發送到addResult.php作爲迴應。下面是在addResult.php處理「圖表」上傳數據的過程:
$chart = $_GET['chart'];
$chart_loc = "../img/".basename($_FILES[$chart]['name']);
move_uploaded_file($_FILES[$chart]['tmp_name'], $chart_loc);
if(($entry != "") && ($stop != "") && ($final != "") && ($chart_loc != "")){
mysql_query("INSERT INTO resultsMod VALUES (now(),'".$entry."','".$stop."','".$final."','".$chart_loc."')") or die(mysql_error());
}
當我點擊「添加」按鈕,它什麼都不做,之前我添加了上傳文件中的字段,一切工作正常。所以我必須在處理文件時做錯了什麼。
我從來沒有使用上傳數據之前,所以我不知道是否允許發送那樣的數據(沒有表單提交,只是通過JavaScript傳遞文件數據到PHP文件)。 我也可能會用move_uploaded_file函數做一些不正確的事情。
目標當然是要實時更新表單中的新數據,包括上傳的圖像。 (我知道我的代碼很簡單,一旦這個功能有效,我會加入它) 任何幫助表示感謝,謝謝!
我不認爲你可以用GET請求發送文件,請嘗試POST。 – 2011-02-18 15:31:58