通过URL传递JSON或类似对象并在PHP中进行解析

通过URL传递JSON或类似对象并在PHP中进行解析,php,jquery,parsing,url,Php,Jquery,Parsing,Url,情况如下: 由于我无法控制的情况,我正在编写一个只通过JSON公开数据的后端 UI是纯HTML/jQuery。来自UI的所有查询都会生成一个JSON对象(通常非常复杂)。我需要UI能够向我传递一个复杂的对象,其中包括多个ID和字符串列表 最简单的方法是什么 多个GET/POST参数,其中一些是列表,例如&List=1,2,3 作为单个参数的完整JSON对象,例如?数据={“List”=[1,2,3]} 完全是另一回事 如果您做过类似的工作,我会对您的经验感兴趣,特别是关于将对象定义传递给客户

情况如下:

由于我无法控制的情况,我正在编写一个只通过JSON公开数据的后端

UI是纯HTML/jQuery。来自UI的所有查询都会生成一个JSON对象(通常非常复杂)。我需要UI能够向我传递一个复杂的对象,其中包括多个ID和字符串列表

最简单的方法是什么

  • 多个GET/POST参数,其中一些是列表,例如
    &List=1,2,3
  • 作为单个参数的完整JSON对象,例如
    ?数据={“List”=[1,2,3]}
  • 完全是另一回事
如果您做过类似的工作,我会对您的经验感兴趣,特别是关于将对象定义传递给客户机的经验

在本例中,想象以下数据包

{
    Id: 1,
    Status: "Processing",
    RecordTypeAIds: (1,2,3)
    RecordTypeBIds: (4,5,6)
    RecordTypeCIds: null
}
将这些信息从jQuery发送到PHP的最简洁的方法是什么(请记住,列表可能是嵌套的n-deep)


感谢您提供的任何帮助。

如果您希望将JSON对象传递给PHP,则默认情况下,5.2.0及更高版本中包含所需的方法

就把我的意见放在这里。我更喜欢JSON,只需通过您喜欢的方法(GET/POST)发送复杂对象,它们几乎立即成为PHP中使用globals($\u POST['key'])和JSON\u decode()的对象/数组。如果您使用jQuery,“发送”部分可以使用$.ajax()、$.get()或$.post()轻松实现。POST理论上没有数据限制,因此对于任意大的数据集,它将更可取

使用Data={……您的对象……}的(几乎)全部JSON解决方案。 在PHP中,您需要$data=json_decode($_REQUEST['data']);。jQuery具有类似的浏览器端支持功能

对于HTML表单和常规URL。。编写一个服务器端适配器,将$\u请求中的参数转换为等效的$数据结构,并调用与上面相同的代码。如果您使用PHP数组符号命名HTML字段,那么这可以像$data=$\u请求一样简单

HTML中的示例

<input type='hidden' name='Status' value='Processing'>
<input type='hidden' name='RecordTypeAIds[0]' value='1'>
<input type='hidden' name='RecordTypeAIds[1]' value='2'>
<input type='hidden' name='RecordTypeAIds[2]' value='3'>

在$u请求中显示为示例结构的(子集)


表单元素中的PHP数组表示法的问题是。。。如果需要从JSON填充这样的表单,那么必须用Javascript编写一个稍微复杂的解码函数,将JSON结构映射到正确的字段名中。没有好的方法可以避免使用decode函数,因为DOM表单名称系统是扁平的,其中JSON字段名是嵌套的,而对于JSON数组元素,名称(索引)是隐式的。在表单元素名称中使用PHP数组符号以外的任何东西只会在服务器端做更多的工作

我同意,JSON和form$\u POST(或AJAX)是更好的选择,我在一个项目中使用过它。@hakre那么,
php5
标记有什么问题吗
php
php5
不是同义词,似乎有一个版本可以提供额外的信息?更不用说这个Q已经有一年多了,到目前为止还不错-有新的指导方针吗?没有,根本没有新的指导方针。最近有一个关于这个的活动,所以它得到了更新,使用了一个更好描述的标记。您的问题不是针对PHP5的,因此5已被删除。这就是全部。只是一些家务。@hakre-Thanke“你的问题不是针对PHP5的,所以5已经被删除了”。这就是我没有建立的联系。啊,好的。如果您有更多问题/顾虑,请告诉我。