Вы не можете вызывать файлы PHP напрямую;вы пытаетесь сделать именно то, для чего предназначен бит defined('_JEXEC') or die;
;)
Вам понадобится создать компонент для приема этих вызовов, а затем отобразить ответ, который вы хотите отобразить.Предполагая (для обсуждения), что вы создаете com_ajax_login
в качестве компонента, ваш JavaScript будет выглядеть следующим образом:
$.post('index.php', {
option: 'com_ajax_login',
tmpl: 'component',
format: 'raw',
username: $('#username').val(),
password: $('#password').val(),
},
function(response){
$('#your_login_box').html(response);
});
Когда компонент выдает ответ, он будет передан в эту анонимную функцию спараметр response
, тогда вы можете разместить его где угодно (например, $('#your_login_box').html(response);
).Также обратите внимание на переменные format
и tmpl
в запросе: они не позволяют Joomla вернуть полный шаблон.
Вы можете в значительной степени скопировать do-login.php
в components/com_ajax_login/ajax_login.php
как есть (хотя вынужно либо установить компонент через установщик Joomla, либо сделать запись в jos_extensions
).