用的是symfony架構,用jquery上傳圖片,但是後台接受不到資料。代碼和錯誤提示如下:
$(document).ready(function(){ $("#fileupload").fileupload({ dataType: 'json', done: function (e, data) { $.each(data.result.files, function (index, file) { $('').text(file.name).appendTo(document.body); }); }, progressall: function (e, data) { var progress = parseInt(data.loaded / data.total * 100, 10); $('#progress .bar').css( 'width', progress + '%' ); }, done: function (e, data) { $.each(data.result, function (index, file) { $('').text(file.name + ' uploaded').appendTo($("body")); }); } }); });
後台代碼如下:
$imgPurpose = trim(stripslashes($_POST["files[]"]));
錯誤提示如下:
Notice: Undefined index: files[]
請問這是怎麼回事呢?多謝了。
回複內容:
用的是symfony架構,用jquery上傳圖片,但是後台接受不到資料。代碼和錯誤提示如下:
$(document).ready(function(){ $("#fileupload").fileupload({ dataType: 'json', done: function (e, data) { $.each(data.result.files, function (index, file) { $('').text(file.name).appendTo(document.body); }); }, progressall: function (e, data) { var progress = parseInt(data.loaded / data.total * 100, 10); $('#progress .bar').css( 'width', progress + '%' ); }, done: function (e, data) { $.each(data.result, function (index, file) { $('').text(file.name + ' uploaded').appendTo($("body")); }); } }); });
後台代碼如下:
$imgPurpose = trim(stripslashes($_POST["files[]"]));
錯誤提示如下:
Notice: Undefined index: files[]
請問這是怎麼回事呢?多謝了。
簡單回答你的問題如下:
前提:沒用過該jQuery
外掛程式,因此只考慮後台代碼
第一、在表單控制項的name
屬性值是數組的情況下(末尾加[]
),在用PHP擷取該控制項提交的內容時,應該省略[]
,因此你的代碼應該像下邊這樣:
$_POST["files"]);
第二、你使用$_POST
全域變數訪問files
,得到的結果是一個PHP數組,因此,不能直接使用字串函數進行處理(這裡暫不討論此處的字串函數)
第三、你使用的是Symfony
架構,不應該直接存取$_POST
以及其他全域變數!Symfony
的HttpFoundation
組件已經把這些全域變數抽象為OOP
介面了,應該使用Symfony
提供的介面。像下邊這樣:(假設你的控制器方法如下)
//...use Symfony\Component\HttpFoundation\Request;// ...public function uploadAction(Request $request){ $imgPurpose = $request->get('files');}// ...
最後,Symfony
的HttpFoundation
組件功能很強大,以下是其官方文檔的一些相關連結,如果閱讀一遍,會對你使用Symfony
架構有很大協助。
Symfony與Http基礎
HttpFoundation組件文檔
備忘:和Symfony
相關的問題,請加上Symfony
的標籤,這樣對Symfony
問題感興趣的答案作者會更容易看到。(輸入內容會自動彈出提示,如)