2014-12-31 42 views
1

我遇到了一個情況,那就是我已經創建了一個包含選項卡視圖的用戶界面,其中每個選項卡都包含使用CakePHP formhelper生成的表單。這些表單中的每一個都有自己的ID,而前開發人員通過單個提交將每個表單的ajax請求鏈接在一起。爲ajax發佈多個CakePHP formhelper表單

客戶仍然希望所有的形式同時發佈,所以我希望我可以序列多種形式這樣的:

var post_data = $("#form-1, #form-2").serialize(); 
$.ajax({ 
    type: "POST", 
    url: "/places/save_form", 
    data: post_data, 
    success: function(result) {}, 
    error: function(result) {} 
}); 

然而,在終點的地方張貼到我似乎得到一個空數組$這 - >請求 - >數據;而當我序列化一個表單時,它返回了我所有的表單值。

我也沒有在控制器中的$ _POST中得到任何東西,所以它好像在它到達那裏之前就被擦掉了。

有沒有辦法讓多個formhelper表單成爲一個單一的ajax文章,然後處理將它們保存在另一端?

+0

你可以使用cakephp js helper http://book.cakephp.org/2.0/en/core-libraries/helpers/js.html –

+0

@AlimonKarim - 我在CakePHP 3上,它說這已被刪除。有沒有特定的內容,你發現可以在一個Ajax請求中容納多個表單? – user2058037

+0

如何將'data:post_data'更改爲'data:dataString'? – Annabel

回答

1

我設法得到這個工作是這樣的:

var post_data = { }; 
post_data.FormOne = $("#form-1").serialize(); 
post_data.FormTwo = $("#form-2").serialize(); 

$.ajax({ 
    type: "POST", 
    url: "/places/save_form", 
    data: post_data, 
    success: function(result) { 
     $(loading_div).remove(); 
    }, 
    error: function(result) { 
     $(loading_div).remove(); 
    } 
}); 

在控制器端:

public function save_form() { 
    $FormOne = $this->request->data['FormOne']; 
    $FormOneValues = array(); 
    parse_str($FormOne, $FormOneValues); 

    $FormTwo = $this->request->data['FormTwo']; 
    $FormTwoValues = array(); 
    parse_str($FormTwo, $FormTwoValues); 

    echo '<pre>'; 
    print_r($FormOneValues); 
    print_r($FormTwoValues); 
    die(); 
} 

我的問題似乎已經爲很多工作要做,才能上JS正確格式化的請求就像在CakePHP控制器端訪問它一樣。