Typo3 9 Ajax 请求,pagetype 返回 404 [英] Typo3 9 Ajax request with pagetype return 404

查看:41
本文介绍了Typo3 9 Ajax 请求,pagetype 返回 404的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的网站有一个使用 AJAX 嵌入的搜索过滤器表单.当我使用简单的 type 参数访问页面时,它会返回内容,但是当我尝试使用 GET 传递其他参数时,它会显示 404.示例:http://www.website.com/?type=871(显示默认内容)http://www.website.com/?type=871&controller=abc(返回 404)

My website has a search filter form embed using AJAX. When I access page with simple type parameter it return the content but when I am trying to pass other parameters using GET then it shows 404. Example: http://www.website.com/?type=871 (it shows default content) http://www.website.com/?type=871&controller=abc (it return 404)

Jquery Ajax 代码

 $.ajax({
                    type: 'GET',
                    url: $(this).attr('action') + '?type=871',
                    data: $(this).serialize(),
                    success: function (data) {
                        $('#searchresults').html(data);

                    }
                });

排版代码

  mlAjax = PAGE
mlAjax {
    typeNum = 871
}

    [globalVar = GP:type = 871]
        config {
            disableAllHeaderCode = 1
            xhtml_cleaning = 0
            admPanel = 0
            debug = 0
            no_cache = 1
        }

        tt_content.list.10 >

        // Insert content that can handle the request
        mlAjax {
            10 = COA
            10 {

                10 = USER
                10 {
                    userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run


                }

            }
        }
    [global]

表单标签

  <f:form id="searchform" action="searchResult" method="get" noCacheHash="TRUE">

推荐答案

我在 TYPO3 v9 和 v10 中经常使用的一种工作方法:

A working method that i constantly use in TYPO3 v9 and v10:

YourHtml.html

<f:form action="searchform" 
        class="form class_ajax" 
        object="{search}" 
        pageUid="{settings.flexform.pages.list.pid}" 
        name="search" 
        noCache="true" 
        method="post" 
        pageType="871"
>

这里非常重要的是您还包括 pageType.

Here is very important that you include the pageType as well.

Setup.typoScript

ajaxSearch_page = PAGE
ajaxSearch_page {
    typeNum = 871
    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
   }
}

您不需要 [globalVar = GP:type = 871] 因为您已经在 pageType 871 上定义了它,您将使用另一个 PAGE 配置.

You do not need the [globalVar = GP:type = 871] since you already have defined that on the pageType 871 you are going to use another PAGE configuration.

请确保您的 TypoScript 与我写的一模一样

Please make sure you have your TypoScript exactly how i wrote it

YourJs.js

var resultContainer = $('#yourContainer');
    var service = {
        ajaxCall: function (url) {
            $.ajax({
                url: url,
                cache: false,
                data: {url: url},
                method: 'POST',
                success: function (result) {
                    resultContainer.html(result).fadeIn('fast');
                },
                error: function (jqXHR, textStatus, errorThrow) {
                    resultContainer.html('Ajax request - ' + textStatus + ': ' + errorThrow).fadeIn('fast');
                }
            });
        }
    };

$(document).on('click', '#searchform', function (ev) {
        var url=$(this).attr('action');
        ev.preventDefault();
        service.ajaxCall(url);
    });

config/sites/yourSite/config.yaml

routeEnhancers:
  PageTypeSuffix:
    type: PageType
    map:
      form.json: 871

这篇关于Typo3 9 Ajax 请求,pagetype 返回 404的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆