2012-08-30 57 views
1

我已經開始使用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' 
    ) 
) 
+0

我錯了當我解釋:項目:[{描述:'酒吧',數量:'1',價格:'20'}]作爲...一個數組與一個項目? –

+0

不,你是對的,那是一個有一個項目的數組。如明智的,如果它有兩個項目,它將是: '項目:[{描述:'酒吧',數量:'1',價格:'20'},{描述:'你好',數量:'2',價格:'10'}]' –

+0

Catalyst的「網絡」選項是否提供了更多的請求細節? –

回答

1

正如@Connorhd說,這是我們如何ENCO的錯誤陣列中的ded對象:我已經修復 - 將在週末之前部署。抱歉給你帶來不便!

+0

沒問題詹姆斯,感謝您的反饋和快速解決!很高興爲一個夢幻般的項目貢獻了一點點。任何計劃開源? –

+0

是的:我們需要首先構建一些其他服務和產品來保護自己作爲一家公司,但是我們計劃逐漸開放源代碼。 –