web-dev-qa-db-fra.com

AJAX le module de test ne fonctionne pas. POST erreur 404

J'essaie de créer mon propre module ajax. Lorsque je soumets le formulaire, je reçois une erreur 404 post. Une idée de ce qui s'est mal passé?

C'est ce que j'ai fait jusqu'à présent.

mod_ajax_test.xml

<?xml version="1.0" encoding="utf-8"?>
<extension type="module"
           version="3.0"
           method="upgrade">
    <name>Ajax Test</name>
    <creationDate>February 7, 2017</creationDate>
    <author>Striker8472</author>
    <authorUrl>http://doa-x.com</authorUrl>
    <copyright>Copyright (C) 2017 doa-x.com. All rights reserved.</copyright>
    <license>GNU General Public License version 2, or later.</license>
    <version>0.0.1</version>
    <description>Ajax Test</description>
    <files>
        <filename module="mod_ajax_test">mod_ajax_test.php</filename>
        <filename>helper.php</filename>
        <folder>tmpl</folder>
    </files>
</extension>

mod_ajax_text.php

<?php defined('_JEXEC') or die;

/**
 * File       mod_ajax_test.php
 * Created    2/7/17 17:12 PM
 */

// Include the helper.
require_once __DIR__ . '/helper.php';

// Instantiate global document object
$doc = JFactory::getDocument();

$js = <<<JS
(function ($) {
    $(document).on('click', 'input[type=submit]', function () {
        var value   = $('input[name=data]').val(),
            request = {
                    'option' : 'com_ajax',
                    'module' : 'mod_ajax_test',
                    'data'   : value,
                    'format' : 'raw'
                };
        $.ajax({
            type   : 'POST',
            data   : request,
            success: function (response) {
                $('.status').html(response);
            }
        });
        return false;
    });
})(jQuery)
JS;

$doc->addScriptDeclaration($js);

require JModuleHelper::getLayoutPath('mod_ajax_test');

helper.php

<?php defined('_JEXEC') or die;

/**
 * File       helper.php
 * Created    2/7/17 17:12 PM
 */
class modAjaxTestHelper
{
    public static function getAjax()
    {
        $input = JFactory::getApplication()->input;
        $data  = $input->get('data');

        return 'Your text here: ' . $data . '!';
    }
}

tmpl/default.php

<?php defined('_JEXEC') or die;

/**
 * File       default.php
 * Created    2/7/17 17:12 PM
 */

?>
<form>
    <input type="text" name="data">
    <input type="submit" />
</form>
<div class="status"></div>
1
Striker8472

Trouvé le problème par moi-même.

'module' : 'mod_ajax_test',

doit être

'module' : 'ajax_test',
2
Striker8472