【问题标题】:How to get an AJAX call in my TYPO3 Extbase Extension?如何在我的 TYPO3 Extbase 扩展中获得 AJAX 调用?
【发布时间】:2012-05-11 00:05:32
【问题描述】:

我在做这件事时遇到了麻烦,我一直在寻找一些手册,但它们似乎对我不起作用(它们要么不够详细,要么我太愚蠢,可能两者兼而有之)。

所以我想通过某个事件从我的 Fluid View HTML 文件开始一个 AJAX 调用,然后它应该在某个控制器中执行操作并返回一些值(目前任何值都可以,我只是不能当涉及到 Extbase 中的 AJAX 时,似乎可以在这里工作)。

【问题讨论】:

  • 这是一些代码 daniel.lienert.cc/blog/blog-post/2011/04/23/… 我无法正确放置它,我(想我)知道您需要的代码。
  • 请描述您迄今为止所做的尝试,帮助我们发布您的流体模板中的相关部分。如果有帮助,也许可以添加您的 TypoScript。顺便说一句:您的问题可能会因为质量差而被否决 - 它没有提供有关该主题的任何细节。
  • 感谢您的帮助。原来我在 Typoscript 中犯了一个错误。我必须选择与 application/json 不同的内容类型作为附加标头,我采用 text/html 并且有效。

标签: ajax typo3 fluid extbase


【解决方案1】:

没有细节我只能猜测你的问题是什么

首先也是最重要的事情是……使用 FireBug 检查 AJAX 调用的问题所在。它可能只是错误的 URL(操作、控制器等)或您的操作中的一些问题,它没有返回所需的输出。 FireBug 将允许您检查它的堆叠位置。

但很可能......

在将 JS/CSS 代码直接写入 Fluid 视图时要记住非常重要的事情,不幸的是它几乎从未被提及:

Fluid 使用大括号表示字符串是一个变量:{someVar},因此如果您将 AJAX 或其他 JavaScript 函数放入 Fluid 模板,它很可能被视为 Fluid 变量。此示例粘贴到模板:

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

将被渲染为:

$.ajax(Array);

解决方案:

直接在模板中转义很难,因此将所有 JavaScript 保存到扩展程序的 Resources/Public 目录下的单独文件中,并将其包含在通用 HTML 标记中肯定更容易:

<script type="text/javascript" src="typo3conf/ext/yourext/Resources/Public/ajaxFunctions.js"></script>

【讨论】:

    【解决方案2】:
    $("#searchFach").change(function(){
            $.ajax({
                  type: 'POST',
                  url:"fragen/controller/Question/searchQuestions",      
                  data: {mainCategoryId:$("#searchFach").val()},
                  success: function(response) { $("#searchCategory").html(response);                         
                  },   
            });
        });`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      • 1970-01-01
      • 2013-11-22
      • 1970-01-01
      • 1970-01-01
      • 2017-08-06
      • 1970-01-01
      相关资源
      最近更新 更多