我试图通过Javascript/Ajax调用Extbase控制器操作。版本是Typo3 v10。控制器操作应该返回JSON。
我已创建控制器和操作,如下所示:
namespace Thevendor\Theextension\Controller;
use Psr\Http\Message\ResponseFactoryInterface;
use Psr\Http\Message\ServerRequestInterface;
use TYPO3\CMS\Core\Http\Response;
class ExampleController
{
/** @var ResponseFactoryInterface */
private $responseFactory;
public function __construct(ResponseFactoryInterface $responseFactory)
{
$this->responseFactory = $responseFactory;
}
public function doSomethingAction(ServerRequestInterface $request): Response
{
error_log("controller action got called!");
$data = ['result' => 42];
$response = $this->responseFactory->createResponse()
->withHeader('Content-Type', 'application/json; charset=utf-8');
$response->getBody()->write(json_encode($data));
return $response;
}
}
接下来,我在ext_localconf.php注册了一个插件:
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'Thevendor.Theextension',
'Testing',
[
\Thevendor\Theextension\Controller\ExampleController::class => 'doSomething',
],
// non-cacheable actions
[
\Thevendor\Theextension\Controller\ExampleController::class => 'doSomething',
]
);
接下来,我创建了一个文件/theextension/Configuration/Typoscript/setup。如下所示的打字脚本:
example_page = PAGE
example_page {
typeNum = 776776
config {
disableAllHeaderCode = 1
additionalHeaders = Content-type:application/json
xhtml_cleaning = 0
debug = 0
no_cache = 1
admPanel = 0
}
10 < plugin.theextension_testing
}
我正在通过访问浏览器和邮递员中的以下网址进行测试:
/家?无缓存=1
响应为200 OK且为空。未调用控制器操作中的“错误日志”行。如果我将打字稿的最后一行更改为:
10 = TEXT
10.value = ExampleText
我确实收到了返回的“ExampleText”。所以打字脚本定义、typeNUM和上面的URL都在工作,但我无法让它调用控制器操作。我也试过:10
有人能帮我指出正确的方向吗?我真的很感谢你的帮助。
尝试将pluginName、extensionName和vendorName也添加到打字稿代码中。应该是这样的:
ajaxSearch_page = PAGE
ajaxSearch_page {
typeNum = 776776
10 = USER
10.userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
10.extensionName= ExtensionName
10.pluginName = PluginName
10.vendorName = Vendor
config {
disableAllHeaderCode = 1
additionalHeaders = Content-type:application/json
xhtml_cleaning = 0
debug = 0
no_cache = 1
admPanel = 0
}
}
也许这个答案能让你如愿以偿
https://stackoverflow.com/a/61637195/7162477
问题内容: 我发送这样的短信 html标记 JavaScript代码 symfony2控制器代码 但为空… 我已经尝试通过Firefox HTTP请求测试器进行普通的发布请求(不是Ajax)。 控制器工作并具有价值。 所以我认为php代码还可以,但是Ajax方面存在问题 成功地调用’success:function’。 您如何获取javascript数据结构的内容? 问题答案: 首先,您无需访问控
问题内容: 我正在将数据从javascript应用程序发送到MVC5控制器,但是,当数据提交到Submit controller操作时,它永远不会被调用。我有一些非常简单的映射器,它们创建以下JSON对象: 然后,我使用以下代码发送数据: 我的控制器代码如下: 我有以下问题: 但是,从不会调用Submit,但是,如果我注释掉了控制器参数,那么它将被调用,这是为什么呢? 从上面看来,控制器框架似乎无
问题内容: 我在Ubuntu16.04上将Symfony3与PhpStorm.2016.3.2一起使用 我之前从未做过AJAX请求,并且想测试从view->到controller->的控制器调用,该调用将答案发送回JSON中的视图。 所以我读了文档,但它们都很具体。因此,我的愿望是只能在视图中编写一个简单的AJAX请求,以便对其进行测试,调用控制器并在视图中返回答案。 这是我的看法: 我的控制器:
问题内容: 我正在开发一个使用大量ajax的grails应用程序。如果请求是ajax调用,那么它应该给出响应(这部分正在工作),但是如果我在浏览器中输入URL,它应该带我到主页/索引页面而不是请求的页面。下面是Ajax调用的示例gsp代码。 如果我们在浏览器URL栏中键入http:// localhost:8080 / Dash / todo / list ,则控制器应重定向到http:// lo
问题内容: 如何通过 HTTPS* 发送ajax GET 请求? * 抛出这个: 是否有其他方法或解决方法可以使此工作正常进行? 如果我使用 Chrome 浏览到该网址,则可以得到响应。我认为没有理由为什么它不能在ajax请求上正常工作。 问题答案: 如果您由于当前处于 同一来源策略 而无法访问该页面,则无法向该页面发出AJAX请求。 **** 的 主机 , 端口 和 方案 (协议)必须在为了使A
我已经找了5个小时左右,但我放弃了。我的ajax get请求不起作用。 它连接到标准的C#mvc api,但我得到的只是这个错误: 无法加载XMLHttpRequesthttp://localhost:18428/api/Reservation/1?weekNumber=1. 对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。起源'http://localhost因