0

機能する AJAX 呼び出しを取得できましたが、新しく作成したアクションではなく、既に作成したアクションでは機能しません。

私のタイポスクリプトは次のようになります。

    
    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 出力用に作成しました。ただし、他のコントローラーとアクションの組み合わせを使用すると、機能します! 新しいアクションで何が間違っていた可能性がありますか?

4

2 に答える 2

2

ajax と Extbase に関する 2 つのこと

Fluid は JavaScript の配列を独自の配列/変数として解析しようとするため、最初に JS をビューに直接配置すると失敗することがよくあります。非常に不快です。解決策は、JS を別のファイルに配置することです (そのため、これについて質問しました)。この質問/回答を参照してください

2つ目はFirebug(または他の同様のツール)です。Extbase リンクの非常に長いパスでは、厄介な間違いを犯しやすいため、文字ごとに注意深く比較する必要があります。

Firebug は、AJAX の問題を非常に迅速に見つけるのに役立ちます。Netタブに切り替えるだけで、何らかのアクションの後に ajax で何が送信され、何が返されるかを確認できます。ほとんどの場合、次のようなものを受け取っていました。

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

しかし、それを確認する唯一の方法は、Firebug でデバッグすることです :)

于 2012-05-23T10:06:28.313 に答える
0

さて、今すぐ動作します。これはおかしなことに聞こえるかもしれませんが、動作させるために何も変更していません。

ext_localconf.php に追加するのを忘れていました:

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

しかし、私はこれを昨日やった後、うまくいきませんでした。今日、タイポスクリプトをランダムに編集してみました (pagetype の変更など) が、突然うまくいきました! しかし、昨日とまったく同じ状態に戻りましたが、それでも機能しました。タイポスクリプトを再配置しなければならなかったのか、それとも何らかの理由で書き直さなければならなかったのかわかりませんが、今はうまくいっています!

于 2012-05-23T09:18:31.037 に答える