La llamada Extbase AJAX solo funciona en algunas acciones

Si bien logré obtener una llamada AJAX que funcione, no funcionará con mis acciones ya creadas, no en una recién creada.

Mi Typoscript se ve así:

    
    lib.AJAXPrototype= PAGE
    lib.AJAXPrototype {
      typeNum = 896571
      config {
        disableAllHeaderCode = 1
        xhtml_cleaning = 0
        admPanel = 0
              debug = 0
              no_cache = 1
        additionalHeaders = Content-type:text/html
      }
    }

    AJAX_Plugintyp < lib.AJAXPrototype
    AJAX_Plugintyp {
      typeNum = 89657201
      10 < tt_content.list.20.myext_myplugin1
    }

Mi llamada AJAX se ve así:

    $.ajax({
      url: "index.php",
      data: "tx_myext_myplugin1[controller]=Mycontroller1&tx_myext_myplugin1[action]=ajax&type=89657201",
      success: function(result) {
        alert(result);
      }
    });

Mi ajaxAcción:

          /**
         * action ajax
         *
         * @return void
         */
        public function ajaxAction() {
            $test = 'sometext';
            $this->view->assign('test', $test);
        }
    

Mi Ajax.html (Ver/Salida):

    <f:section name="main">
    <f:flashMessages />
    <div id="ajaxd">{test}</div>
    </f:section>

No obtendré ningún resultado de esto, creé esta Acción solo para la Salida Ajax. Sin embargo, si uso cualquier otra combinación de controlador/acción, ¡funciona! ¿Qué podría haber hecho mal con la nueva acción?

preguntado el 22 de mayo de 12 a las 11:05

¿Está su guión colocado en un lugar separado? js archivo o directamente en la vista? -

@Marcus: Para probar, está escrito directamente en la vista. -

2 Respuestas

Dos cosas sobre ajax y Extbase

Nombre Colocar JS directamente en la vista a menudo falla, porque Fluid está tratando de analizar las matrices de JavaScript como su propia matriz/variable. Muy incómodo. La solución es colocar JS en archivos separados (por lo tanto, le hice una pregunta al respecto). Ver esta pregunta / respuesta

La segunda cosa es Firebug (u otra herramienta similar). Con rutas ultra largas de enlaces Extbase, es fácil cometer algún error molesto, y luego debe comparar cuidadosamente carácter por carácter.

Firebug lo ayudará a encontrar el problema de AJAX realmente rápido, solo ábralo, cambie al Net pestaña y luego verá lo que se envía con ajax después de alguna acción y lo que devuelve. Lo más probable es que estuvieras recibiendo algo como:

Uncaught TYPO3 Exception:
The action "xxxxx" (controller "Yyyy") is not allowed by this plugin...

Pero la única forma de verificarlo es depurando con Firebug :)

contestado el 23 de mayo de 17 a las 12:05

Gracias de nuevo, recuerdo que dijiste esto en esa otra pregunta, por extraño que parezca, la pestaña de red no estaba activada, así que solo puedo verificarla en el futuro. Pero como escribí, ya se ha solucionado (de alguna manera). Sin embargo, gracias por la ayuda, tendré en cuenta colocar el JS en un archivo externo desde el principio a partir de ahora. Mientras tanto, ¿sabe cómo obtener valores de los campos de la base de datos desde la acción y enviarlos como una matriz a AJAX? Ese sería mi próximo problema :) - user828591

Algunas de las pestañas de Firebug están deshabilitadas de forma predeterminada, si hace clic en ellas, se habilitarán hasta la próxima desactivación manual. Acerca de los valores de DB: sí, conozco el truco, pero es una mejor idea crear una nueva pregunta y demostrar lo que quieres lograr. - bisior

Lo acabo de escribir, probablemente demasiado tarde, pero no tengo mucha prisa :) - user828591

Bien, así que AHORA MISMO funciona. Esto puede parecer una locura, pero en realidad no cambié nada para que funcionara.

Olvidé agregarlo a ext_localconf.php:

    
        Tx_Extbase_Utility_Extension::configurePlugin(
            $_EXTKEY,
            'Myplugin1',
            array(
                'Mycontroller' => 'list, ajax',
            ),
            // non-cacheable actions
            array(
                'Mycontroller' => 'list, ajax',
            )
        );
        

Sin embargo, hice esto ayer y después, no funcionó. Hoy probé de nuevo algunas ediciones aleatorias en el texto tipográfico (cambiando el tipo de página, etc.) y de repente ¡funcionó! Sin embargo, volví al estado exacto que tenía ayer y todavía funcionaba. Estoy confundido, no tengo idea si solo tuve que reorganizar el texto tipográfico o si tuve que escribirlo nuevamente por alguna razón, ¡pero estoy feliz de que funcione ahora!

contestado el 23 de mayo de 12 a las 10:05

AFAIK extbase usa algunos cachés internos ... ¿quizás uno de los cachés se agotó? - pgampe

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