[英]Most efficient way for JSON or JS object to be passed along with Form Data via AJAX POST to PHP
從表面上看,這似乎是一個重復的問題。 請注意,我已經閱讀了所有相關的帖子,沒有找到任何明確的答案和/或這里的問題是非常不同的。 甚至某些方面的某些指示或材料澄清具體問題也會有所幫助。 我不是在尋找勺子喂食。
這是問題:
我有一個表單,我有一些其他元數據(缺少一個更好的術語)被發送到服務器,其中包括配置參數。 這些都需要與PhP后端處理的表單數據一起使用,並返回一些復雜的JS和HTML標記。
不可否認,我不是JSON的常規用戶,但我的閱讀指出使用JSON作為非表單數據,並將表單數據單獨序列化並將其分配給另一個屬性,如:
var ser_data = $(form_selector).serialize();
var meta_data = { //Just for example
name: 'John Doe',
age: 62,
address: '22 Park Avenue'
};
然后將.ajax中的數據傳遞為:
data_sent = data_sent = {'meta_data':meta_data, 'form_data':ser_data};
some_promise = $.ajax({
url : '../php/json_test.php',
dataType: 'json',
type : 'POST',
cache : false,
data : data_sent
});
在PhP方面,我必須在多個級別導航$ _POST []以獲取數據。 此外,表單數據丟失隱式URL解碼。
當然,一種方法是手動構造序列化字符串,以附加到表單序列化字符串,如
form_data_serialized...&name='John doe'&age=62...
我一起走錯了路嗎? 有沒有更好更簡單的方法? 謝謝!
為什么不反過來呢? 將您的元數據創建為JSON字符串並將其添加到表單中的隱藏輸入字段,然后POST
。 您的表單數據被解碼為$_POST
,您可以從那里提取和解碼您的JSON元數據。
.serialize
只是創建一個參數字符串,例如, foo=bar&foobar=2
。 考慮到這一點,添加額外的參數是基本的字符串連接。
var data_sent = $.param(meta_data) + "&" + ser_data;
將meta_data
轉換為param字符串,然后將序列化的表單數據附加到其中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.