このフォームの複数のインスタンスが存在する可能性があるため、フォームをページに動的にロードする必要があります。検証と保存は問題ではありませんが、コントローラーから実際のフォーム コンテンツ/マークアップを返すことができないようです。単純な値 (id: 1) でテストすると、データを正常に返すことができますが、データ型が設定されていない場合、または [Object object] の場合、実際のフォームは常に未定義として返されます。
コントローラ:
public function addPermissionFormAction()
{
$this->_helper->viewRenderer->setNoRender();
$this->_helper->layout->disableLayout();
//data from ajax call is successfully received
$username = $this->getRequest()->getParam('user');
//...Code to get $pages...
$form = new Pds_Wizard_SubForm_Externals($pages);
if(!isset($form)) $form = false;
//I have run XDebug to here and confirmed that the form is built successfully.
echo Zend_Json::encode(array('form' => $form));
}
私の Ajax コール:
$('#get-player-permissions').click(function() {
if($('#test-test').val().length > 0) {
$.ajax({
url: '/pds/external-user/add-permission-form',
data: { user: $('#test-test').val() },
dataType: 'json',
contentType: "application/json",
success: function(data){
alert(data.form); // [Object object]
$("#wizardContainer").html(data.form); //empty, no form content
}
})
}
});
単純な値を送信するための dataType フィールドまたは contentType フィールドを追加することさえせずにこれを試してみましたが、それらを通過させるのに問題はありません。ただし、フォームでは、この場合は null または未定義になります。
フォームを動的にロードするより理想的な方法など、アドバイスをいただければ幸いです。私は Ajax 呼び出しを頻繁に使用するわけではないので、これが単純な間違いである場合は申し訳ありません。前もって感謝します!