我已經開始使用trigger.io將我們的jQuery移動web應用程序作爲本機構建。目前形式的網絡應用使用名爲janky.post的插件來製作跨域帖子,以json格式提交數據 - 這是我們基於PHP的API所期望的。forge.request.ajax發佈數據爲json
我已經開始使用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 = array(
0 => array(
'description' => 'Bar',
'quantity' => '1',
'price' '20'
)
)
我錯了當我解釋:項目:[{描述:'酒吧',數量:'1',價格:'20'}]作爲...一個數組與一個項目? –
不,你是對的,那是一個有一個項目的數組。如明智的,如果它有兩個項目,它將是: '項目:[{描述:'酒吧',數量:'1',價格:'20'},{描述:'你好',數量:'2',價格:'10'}]' –
Catalyst的「網絡」選項是否提供了更多的請求細節? –