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