У меня есть два поля ввода, выберите поле и одну кнопку на странице входа в систему joomla по умолчанию. Страница, загруженная из файла: (/templates/theme718/html/com_users/login/default_login.php) - вход по умолчанию для Joomla.Отправить форму с помощью запроса Ajax
Мне нужно заполнить, изменить и щелкнуть эти пункты программно.
мне удалось заполнить поля ввода и изменить опцию выбора окна, используя следующую строку:
jQuery(document).ready(function(){
....
jQuery('input#username').val('"+username+"');
jQuery('#lang option[value=zh-TW]').attr('selected','selected');
jQuery('#lang').change();
...
})
Однако я не мог вызвать «нажмите кнопку» даже на кнопку, используя следующие строки:
jQuery('#login').trigger('click');
jQuery('submit#login').click();
у меня есть эта строка в файле:
<button type="submit" style="float:right" class="button loginbtn""><?php echo JText::_('JLOGIN'); ?></button>
Но я не уверен, если я использую т он исправляет идентификатор кнопки или нет.
Я понимаю, что эта кнопка будет представлять следующий вид (существует компонент/com_users/Views/логин/TMPL/default_login.php):
<form action="<?php echo JRoute::_('index.php?option=com_users&task=user.login'); ?>" method="post">
<fieldset>
<?php foreach ($this->form->getFieldset('credentials') as $field): ?>
<?php if (!$field->hidden): ?>
<div class="login-fields"><?php echo $field->label; ?>
<?php echo $field->input; ?></div>
<?php endif; ?>
<?php endforeach; ?>
<?php if (JPluginHelper::isEnabled('system', 'remember')) : ?>
<div class="login-fields">
<label id="remember-lbl" for="remember"><?php echo JText::_('JGLOBAL_REMEMBER_ME') ?></label>
<input id="remember" type="checkbox" name="remember" class="inputbox" value="yes" alt="<?php echo JText::_('JGLOBAL_REMEMBER_ME') ?>" />
</div>
<?php endif; ?>
<button type="submit" class="button"><?php echo JText::_('JLOGIN'); ?></button>
<input type="hidden" name="return" value="<?php echo base64_encode($this->params->get('login_redirect_url', $this->form->getValue('return'))); ?>" />
<?php echo JHtml::_('form.token'); ?>
</fieldset>
</form>
Так я понял, если я не могу вызвать кнопку щелчка событие, возможно, я попытаюсь отправить форму непосредственно с помощью запроса Ajax.
Так что мой вопрос, как я могу отправить форму либо:
- Через нажатие кнопки (выше заявления не работает)
- через отправку формы непосредственно с помощью запроса Ajax (из другого домена). Я попытался следующие, и это не сработало:
$.ajax(
{
type:"POST",
url:"https://link/jdev/index.php/en/component/users/?task=user.login",
data:$('form').serialize(),
success: function(data){
alert("successful");
alert("Result: "+data.result+", Message: "+data.message);
}
});
Отдача оповещения «не определено» как для «данные» и «сообщение». Когда я пытаюсь скопировать и пропустить URL-адрес в моем браузере, он возвращает «недопустимый токен».
Это не настоящий сайт, он предназначен только для тестирования.
Осмотреть фактический запрос в Дев инструментов вкладка сети ... посмотреть, что на самом деле отправлено обратно – charlietfl
@charlietfl У меня есть следующая строка ' 'на открываемой странице. Но когда я использую что-то вроде этого' jQuery ('# login').триггер ('click'); ', он не срабатывает. – Hawk