我有两个输入字段,默认joomla登录页面中的选择框和一个按钮。从文件加载的页面:(/ templates/theme718/html/com_users/login/default_login.php) - Joomla默认登录。
我需要以编程方式填写,更改和单击这些项目。
我设法填充输入字段并使用以下行更改选择框选项:
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>
但我不确定我是否使用了正确的按钮ID。
我的理解是这个按钮将提交以下表格(存在于components / com_users / views / login / 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(
{
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);
}
});
警报返回&#39; undefined&#39;对于这两个数据&#39;和&#39;消息&#39;。 当我尝试将网址复制并粘贴到我的浏览器中时,会返回“无效令牌”。
这不是真正的网站,只是出于测试目的。