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

Но я не уверен, если я использую т он исправляет идентификатор кнопки или нет.

Я понимаю, что эта кнопка будет представлять следующий вид (существует компонент/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.

Так что мой вопрос, как я могу отправить форму либо:

  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); 
      } 
     }); 

Отдача оповещения «не определено» как для «данные» и «сообщение». Когда я пытаюсь скопировать и пропустить URL-адрес в моем браузере, он возвращает «недопустимый токен».

Это не настоящий сайт, он предназначен только для тестирования.

+0

Осмотреть фактический запрос в Дев инструментов вкладка сети ... посмотреть, что на самом деле отправлено обратно – charlietfl

+0

@charlietfl У меня есть следующая строка ' 'на открываемой странице. Но когда я использую что-то вроде этого' jQuery ('# login').триггер ('click'); ', он не срабатывает. – Hawk

ответ

0

а) Во-первых для формы представления я хотел бы сказать, что вы можете разместить проверки на форме, а на документе готов представить форму каждый раз, когда

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

и прикрепить вызов Ajax для формирования Submit событие.

Я не мог найти любую кнопку с идентификатором login в коде вы показали

б) Для вызова Ajax добавить dataType : 'json' в параметре передается функции АЯКС

+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 для создания события« Отправить ». Что я должен изменить в своем аякс-запросе? – Hawk

Смежные вопросы