2016-09-26 4 views
1

Привет У меня есть extbase typo3 extension.It содержит окно модели с формой. Оформить вызов ajax обновляет базовую таблицу с помощью updateAction.My проблема в том, что как получить аргумент формы через getArgument() метод controller.My кода приведен нижеAjax form submission - 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

Вы можете получить данные формы с использованием JavaScripts 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 { 
     } 
    } 
}); 

You shoul d, вероятно, сделайте свою форму с использованием жидкости, иначе какой-нибудь материал extbase будет использоваться в форме (проверьте скрытый div в любой сгенерированной жидкостью форме).

Чтобы получить URL-адрес POST-данных, я бы рекомендовал использовать расширение typoscript_rendering - это сделано для этой конкретной цели. Он генерирует URL-адрес, который не будет возвращать всю HTML-страницу, но только результат из шаблона вызываемого действия. Для этого вам необходимо иметь cHash.

+0

При использовании FormData я получил следующая ошибка: TypeError: 'append' вызывает объект, который не реализует интерфейс FormData. –

+0

Где вы можете получить эту ошибку? В вызове 'jQuery.ajax' или в строке' var params'? – Jost

+0

В jquery.min.js (строка 6) –