我已经开始使用 trigger.io 将我们的 jQuery 移动 Web 应用程序作为原生构建。当前形式的 Web 应用程序使用一个名为janky.post的插件来制作跨域帖子,以 json 格式提交数据 - 这是我们基于 PHP 的 API 所期望的。
我已经开始forge.request.ajax
在本机构建中使用,它适用于应用程序中的所有表单,除了一个。该请求似乎不是作为 json 编码对象提交的,而是一个标准的 $_POST 数组。这不是什么大问题,因为我可以修改 API 来检测这一点,但是由于提交的数据是多维的,因此该方法似乎对数组进行了错误处理,因此它的结构不像预期的那样。
如何纠正这种行为以获得我想要的输出?无论如何,我是否可以强制为表单提交 json?如果是,这样做有什么缺点吗?它会阻止我将来向此表单提交添加文件上传吗?
例子:
为了扩展我的意思,过程如下。提交时,控制器将表单数据格式化为 json 并将其传递给 ajax 方法,如下所示:
window.forge.ajax({
type: 'POST',
url: 'foo.com/bar',
data: data,
dataType: 'json',
success: function( response ) {
/* code omitted */
});
});
这样做的原因是因为帖子中的一些数据不是直接来自表单本身,而是由其他模型提供的。发布的结构data
如下:
{
id: '23',
date: '2012-08-30 00:00:00',
name: 'Foo',
items: [{
description: 'Bar',
quantity: '1',
price: '20'
}]
}
但是当我们基于 PHP 的 API 将其作为数组接收时,结构如下:
array(
'id' => '23'
'date' => '2012-08-30 00:00:00',
'name' => 'Foo',
'items' => array(
0 => array( 'description' => 'Bar' ),
1 => array( 'quantity' => '1' ),
2 => array( 'price' => '20' )
)
)
如您所见,items数组中与单个项目对应的每个字段都已更改为自己的数组,这是错误的,应该是:
items = array(
0 => array(
'description' => 'Bar',
'quantity' => '1',
'price' '20'
)
)