2012-05-22 1 views
0

Хотя мне удалось получить рабочий вызов AJAX, он не будет работать с моими уже созданными действиями, а не с созданным.Вызов ExtAase AJAX работает только в некоторых действиях

Мой TypoScript выглядит следующим образом:

 

    
    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 
    } 

Мой AJAX вызов выглядит следующим образом:

 

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

Мой ajaxAction:

 

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

Мои ajax.html (Просмотр/выход) :

 

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

Я не получу никакого выхода из этого, я создал это действие только для выхода Ajax. Однако, если я использую любую другую комбинацию контроллеров/действий, она работает! Что я мог сделать неправильно с новым действием?

+1

Размещена ли скрипт в отдельном 'js' файла или непосредственно в окне просмотра? – biesior

+0

@Marcus: Для тестирования это написано прямо в представлении. – user828591

ответ

0

ОК, так ПРАВИЛЬНО, это работает. Это может показаться сумасшедшим, но я ничего не изменил для его работы.

я забудьте добавить его в ext_localconf.php:

 

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

Однако, я сделал это вчера, и после этого, он не работает. Сегодня я попробовал некоторое случайное редактирование в typoscript снова (изменение pagetype и т. Д.), И вдруг это сработало! Однако я вернулся к тому состоянию, в котором я был вчера, и он все еще работал. Я смущен, понятия не имею, нужно ли мне просто переупорядочить типографский шрифт, или если ему пришлось написать его снова по какой-то причине, но я счастлив, что он работает сейчас!

+0

AFAIK extbase использует некоторые внутренние кеши ... может быть, один из тайников был тайм-аут? – pgampe

2

Две вещей о AJAX и Extbase

Первого Размещение JS непосредственно с точкой зрения часто терпит неудачу, потому что жидкость пытается разобрать массивы в JavaScript как собственный массив/переменный. Очень неудобно. Решение помещает JS в отдельные файлы (поэтому я задал вам вопрос об этом). See this question/answer

Вторая вещь Firebug (или другой подобный инструмент). С очень длинными путями связей Extbase легко сделать какую-то неприятную ошибку, а затем вам нужно сравнить char char.

Firebug поможет вам быстро найти проблему AJAX, просто откройте ее, перейдите на вкладку Net, а затем вы увидите, что отправлено с ajax после какого-либо действия и что оно возвращает. Скорее всего, вы получали что-то вроде:

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

Но единственный способ проверить это отладкой с Firebug :)

+0

Еще раз спасибо, я помню, вы сказали это в этом другом вопросе, как ни странно, Net-tab не был активирован, поэтому я могу только проверить его в будущем. Но, как я уже писал, это уже было решено (каким-то образом). Спасибо за помощь, однако, я буду иметь в виду, чтобы JS вошел в внешний файл с самого начала с этого момента. Между тем, знаете ли вы, как получить значения из полей базы данных из действия и отправить его как массив обратно в AJAX? Это будет моей следующей проблемой :) – user828591

+0

Некоторые вкладки Firebug по умолчанию отключены, если вы нажмете его, он будет включен до следующего ручного отключения. О значениях DB: yeap, я знаю трюк, но лучше создать новый вопрос и продемонстрировать, чего вы хотите достичь. – biesior

+0

Спасибо, я начну сразу :) – user828591