我需要向服務器發送一個表單和一個陣列/字串。
我的 Ajax 看起來像這樣:
var formData = $("#formpv").serialize();
$.ajax({
type: 'POST',
url: 'scripts/formIntoDB.php',
data: formData,
通過這種方式,我可以像這樣在 PHP 中檢索表單資料:
$_POST['name'];
//Output "Foobar"
但是當我發送序列化的表單資料和另一個這樣的引數時:
var formData = $("#formpv").serialize();
var posData = "TEST";
$.ajax({
type: 'POST',
url: 'scripts/formIntoDB.php',
data: {form: formData, pos: posData},
現在嘗試在 PHP 中獲取名稱:
$_POST['form']['name'];
這只會引發PHP Parse 錯誤:語法錯誤,意外的 '['
當我發送這樣的資料時有什么區別 data: {form: formData, pos: posData}和 data: formData?
uj5u.com熱心網友回復:
問題是因為字串 informData變成了雙重包裝,即。一串鍵/值對中的一串鍵/值對。由于只有頂層被反序列化,您的 PHP 代碼無法以您想要的方式讀取第二層。
要解決此問題,您需要手動創建整個物件,例如:
$.ajax({
type: 'POST',
url: 'scripts/formIntoDB.php',
data: {
form: {
name: $('#yourNameInput').val(),
// all your other inputs here...
},
pos: posData
}
});
或者,您可以保持請求資料平坦,并pos使用表單中的隱藏輸入進行添加。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/470286.html
標籤:javascript php html jQuery 阿贾克斯
下一篇:一次只允許切換一個元素
