2016-09-26 141 views
1

嗨我有一個extbase typo3擴展名。它包含一個窗體的模型窗口。提交ajax調用通過updateAction.My更新基礎表。如何通過獲取表單參數getArgument ()在controller.My代碼方法如下Ajax表單提交 - typo3

給出我的形式是

<form id="updatewindow" method="POST" name="iframe"> 
    <p><label for="fields">' + $(title).html() + ':</label> 
    <input type="text" value="' + cell_data + '" name="tx_suserform_userform[newUser][name]"></p> 
    </form> 

AJAX調用

url_update = '<f:uri.action action="updateFileds" absolute="1" noCacheHash="1"/>'; 
jQuery.ajax({ 
     url: url_update, 
     type: "POST", 
     data: params, 
     success: function (data) { 
      if (data == 'true') { 
       location.reload(); 
      } else { 
      } 
     } 
    }); 

在我的控制,我寫

$post_val = $this->request->getArgument('name'); 

但它返回錯誤

$this->request->getArguments() 

只返回控制器名稱和行動

回答

1

$this->request->getArguments()接收格式

$pluggin_signature['argument'] 

所以我通過從ajax.Here該格式的參數後/獲取參數是我的代碼

 url_update = '<f:uri.action action="updateFileds" absolute="1" noCacheHash="1"/>'; 
    var params = {'tx_pluggin_signature[name]':'test','tx_pluggin_signature[phone]':'(456) 456-2345'}; 
jQuery.ajax({ 
     url: url_update, 
     type: "POST", 
     data: params, 
     success: function (data) { 
      if (data == 'true') { 
       location.reload(); 
      } else { 
      } 
     } 
    }); 
+0

正是..我需要知道的。 –

2

可以使用JavaScript的FormData對象獲取表單數據:

url_update = '<f:uri.action action="updateFileds" absolute="1" noCacheHash="1"/>'; 
var params = new FormData(jQuery('#updatewindow').get(0)); 
jQuery.ajax({ 
    url: url_update, 
    type: "POST", 
    data: params, 
    success: function (data) { 
     if (data == 'true') { 
      location.reload(); 
     } else { 
     } 
    } 
}); 

shoul You d可能會使用流體呈現您的表單,否則extbase依賴的某些東西將從表單中丟失(檢查任何流體生成表單中隱藏的div)。

要獲取將數據發佈到的URL,我建議使用擴展名typoscript_rendering - 它是爲了這個確切目的而制定的。它會生成一個URL,它不會返回整個HTML頁面,而只會返回被調用動作模板的結果。你需要啓用cHash來使用它。

+0

當使用FORMDATA我得到了以下錯誤:TypeError:'append'在未實現接口FormData的對象上調用。 –

+0

你從哪裏得到這個錯誤?在調用'jQuery.ajax',或在'var params'行? – Jost

+0

在jquery.min.js(第6行) –