我需要通過jQuery發送POST數據到我的PHP服務器。這就是我目前正在接受(這是我想):
client_id: 55
client_name: 'Josh'
age: '35'
extra: array(0) -> array(['preview'] -> true, ['lookup'] -> false)
而要達到這一點,我有以下代碼:
var elements = [];
var listOfExtra = []
listOfExtra.push({'preview': true, 'lookup': false});
elements['client_id'] = 55;
elements['client_name'] = 'Josh';
elements['age'] = 35;
elements['extra'] = listOfExtra;
$.post(url, $.extend({}, elements));
但現在我還需要發送文件中的用戶上傳,所以通過這樣做:
elements['file'] = event.target.files[0];
我收到消息Illegal invocation
在JavaScript
因爲這沒有工作,我試圖執行一個formData()
:
var formData = new FormData();
formData.append('client_id', 55);
formData.append('client_name', 'Josh');
formData.append('age', 35);
formData.append('extra', listOfExtra);
formData.append('file', event.target.files[0]);
$.ajax(
{
url: url
type: 'POST',
data: formData,
processData: false,
contentType: false
});
什麼情況是,現在的extra
是[object][object]
,這是確定的,所以我只需要字符串化它。
formData.append('extra', JSON.stringify(listOfExtra));
現在的問題是,我有很多的使用$_POST['extra'][0]['preview']
(例如)代碼,現在我需要之前,它的所有解碼和使用大量的條件,如:
$extra = isset(json_decode($_POST['extra'])[0]['preview']);
if($extra != null)
$extraContent = json_decode($_POST['extra'])[0];
$preview = (isset($extraContent) ? $extraContent->preview : $extra[$_POST['extra'][0]['preview']);
是有什麼辦法通過使用formData()
或$.post
我可以保持從JavaScript發送的值到PHP像我想要的和發送文件?
你試過嗎?它對你有用嗎? –