簡體   English   中英

JSON或JS對象通過AJAX POST傳遞給PHP的最有效方式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM