forge.request.ajax将数据发布为json

时间:2012-08-30 10:16:07

标签: ajax request trigger.io forge

我已经开始使用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'
     )
 )

1 个答案:

答案 0 :(得分:1)

正如@Connorhd所说,这是我们如何在数组中编码对象的错误:我现在已修复 - 将在本周末部署。很抱歉给您带来不便!