从表面上看,这似乎是一个重复的问题。请注意,我已经阅读了所有相关文章,没有找到确切的答案,并且/或者这里的问题有很大不同。甚至在某些职位或材料上明确说明问题的方向也会有所帮助。我不是在寻找汤匙喂食。

这是问题所在:

我有一个表单,还有一些其他元数据(由于缺乏更好的术语)要发送到服务器,其中包含配置参数。这些是必需的,以及将由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...


我一起走错了路吗?有没有更好,更简单的方法?谢谢!

最佳答案

.serialize仅创建一个参数字符串,例如foo=bar&foobar=2。考虑到这一点,添加其他参数是基本的字符串连接。

var data_sent = $.param(meta_data) + "&" + ser_data;


meta_data转换为参数字符串,然后将序列化的表单数据附加到该字符串。

关于javascript - 通过AJAX POST将JSON或JS对象与表单数据一起传递给PHP的最有效方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20890716/

10-09 17:34
查看更多