我有两个输入字段,默认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>
但我不知道如果我采用t他纠正按钮ID或不。
我的理解是,这个按钮将提交以下表格(存在于组件/ com_users /视图/登录/ 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);
}
});
警报返回“不确定”两个“数据”和“消息”。 当我尝试复制并通过网址进入我的浏览器时,它返回'无效令牌'。
这不是真正的网站,它只是用于测试目的。
检查在开发工具的实际要求的参数添加
dataType : 'json'
网络选项卡...查看实际发回的内容 – charlietfl@charlietfl我有以下行:'在我打开的页面中,但是当我使用类似'jQuery('#login')的东西。触发('点击');',它不会触发。 – Hawk