2015-05-07 85 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