2012-06-30 4 views
0

Я пытаюсь получить форму узла через ajax в Drupal.Ответ Parseerror при попытке получить данные json через ajax в Drupal

Как правило, я должен был создать кнопку запуска ахаха, которая приносит и отображает красиво данные json. Я сделал это для тестирования, и он работал очень хорошо с PHP-кодом ниже.

Но мне нужно динамически создавать пользовательские связанные с ahah ссылки с 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 и я создал вызов AJAX ниже это просто принимает данные json и добавляет его.

$.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-код. Если он имеет простой текст, он не возвращает никаких ошибок.

Также, когда я тестировал обычную кнопку ahah (путь Drupal), была использована версия jQuery 1.3.2, но в моем случае я использую версию 1.7.2.

Любая помощь была бы действительно оценена.

ответ

0

Извините за поздний ответ. Да, я использовал Drupal 6.

В конце концов, проблема оказалась в разных версиях jQuery. Итак, я использовал jQuery.noConflict(), и все, казалось, работало нормально.

0

Учитывая, что вы вызываете drupal_json, а не drupal_json_output, вы пытаетесь сделать это в Drupal 6?

Вы найдете структуру AJAX/AHAH в Drupal 7, что значительно упростит ее работу.