Respuesta de Parseerror al intentar recibir datos json a través de ajax en Drupal

Estoy tratando de recibir un formulario de nodo a través de ajax en Drupal.

Normalmente, debería haber creado un botón activado por ahah que trae y muestra bien los datos json. Lo hice para probar y funcionó muy bien con el código php a continuación.

Pero lo que necesito es crear dinámicamente enlaces activados por ahah personalizados con javascript. Y estos enlaces personalizados para actuar como botones ahah y llamar a la función de devolución de llamada que trae el formulario de nodo.

En el lado del servidor, la función de devolución de llamada que envía los datos json es esta:

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']),
        )
    );
}

Miré un poco cómo ahah.js de Drupal se ocupa de recuperar y mostrar el contenido json y creé una llamada ajax a continuación que simplemente toma los datos json y los agrega.

$.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',
});

El problema es que siempre recibo un error de análisis mensaje y el objeto de respuesta es como un desastre. No puedo traer los datos json con éxito y no sé cómo se produjo este error.

Aviso: Esto sucede cuando $data tiene código html. Si tiene texto sin formato, no devuelve errores.

También cuando probé con el botón normal ahah (al estilo de Drupal), se usó la versión 1.3.2 de jquery, pero en mi caso uso la versión 1.7.2.

Cualquier ayuda sería realmente apreciada.

preguntado el 30 de junio de 12 a las 18:06

2 Respuestas

Dado que está llamando a drupal_json, y no a drupal_json_output, ¿está tratando de hacer esto en Drupal 6?

Encontrará que el marco AJAX/AHAH en Drupal 7 lo hace mucho más fácil.

Respondido 11 ago 12, 09:08

Disculpa por la respuesta tardía. Sí, usé Drupal 6.

Al final, el problema resultó ser las diferentes versiones de jQuery. Así que usé jQuery.noConflict() y todo parecía funcionar bien.

Respondido 02 Oct 12, 10:10

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.