Drupal で ajax 経由でノード フォームを受信しようとしています。
通常は、json データを適切に表示するトリガー ボタンを作成する必要がありました。私はテストのためにそれを行いましたが、以下のphpコードで非常にうまく機能しました.
しかし、私が必要としているのは、JavaScript を使用してカスタム ahah トリガー リンクを動的に作成することです。そして、これらのカスタム リンクは、あははボタンのように機能し、ノード フォームを表示するコールバック関数を呼び出します。
サーバー側では、json データを送信するコールバック関数は次のとおりです。
function get_lesson_form($nid) {
global $user;
$node = array('uid' => $user->uid, 'name' => $user->name, 'type' => 'lesson');
$form_id = 'lesson_node_form';
// Initialize settings:
$file = drupal_get_path('module', 'node') . '/node.pages.inc';
include_once './' . $file;
$rendered_form = drupal_get_form($form_id,$node);
$javascript = drupal_add_js(NULL, NULL);
drupal_json(array(
'status' => TRUE,
'data' => $rendered_form,
'settings' => call_user_func_array('array_merge_recursive',$javascript['setting']),
)
);
}
Drupal の ahah.js が json コンテンツの取得と表示をどのように処理するかを少し調べて、単純に json データを取得して追加する以下の ajax 呼び出しを作成しました。
$.ajax({
url : '/fcrp_form/nid',
success : function(response) {
console.log(response);
var form = Drupal.parseJson(response);
var target_wrapper = $('#event-edit-container');
var new_content = $('<div></div>').html(form);
target_wrapper.empty().append(new_content);
Drupal.attachBehaviors($('#event-edit-container'));
},
error : function(response, error) {
console.log(response);
console.log('Error: '+ error);
},
type: 'POST',
dataType: 'json',
});
問題は、常にparseerrorメッセージを受け取り、応答オブジェクトが混乱していることです。json データを正常に取り込むことができず、このエラーがどのように発生したのかわかりません。
注意: これは、$data に html コードがある場合に発生します。プレーン テキストの場合、エラーは返されません。
また、通常のあはボタン(Drupalのやり方)でテストしたときは、jqueryのバージョンは1.3.2でしたが、私の場合は1.7.2のバージョンを使用しています。
どんな助けでも本当に感謝しています。