2015-05-07 83 views
0

我有两个输入字段,默认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请求提交表单。

所以我的问题是,我怎么能提交的形式:

  1. 通过点击按钮(如上陈述没有工作)
  2. 通过提交表单直接使用来自不同领域 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); 
      } 
     }); 

警报返回“不确定”两个“数据”和“消息”。 当我尝试复制并通过网址进入我的浏览器时,它返回'无效令牌'。

这不是真正的网站,它只是用于测试目的。

+0

检查在开发工具的实际要求的参数添加dataType : 'json'网络选项卡...查看实际发回的内容 – charlietfl

+0

@charlietfl我有以下行:'在我打开的页面中,但是当我使用类似'jQuery('#login')的东西。触发('点击');',它不会触发。 – Hawk

回答

0

a)首先对表单提交,我会想说,你可以将验证的形式,并在文件准备每次

$(document).ready(function(){ 
$('#login-form').submit(); 
}); 

提交表格,并附上Ajax调用形成Submit事件。

我不能在你表现出

b)对于AJAX调用的代码找到ID login任何按钮传递给Ajax功能

+0

表单位于(components/com_users/views/login/tmpl/default_login.php)中。打开登录页面的文件位于(/templates/theme718/html/com_users/login/default_login.php)中。那么,我应该添加上面的代码? (b)我添加了'dataType',但它不起作用 - 相同的结果 – Hawk

+0

添加在这些文件中的任何一个 – sanjeev

+0

明白了,但没有'附加ajax调用来形成'Submit'事件。我应该在我的ajax请求中更改哪些内容? – Hawk