2015-02-13 3 views
-1

Я хочу проверить форму, а затем отправить значения с помощью $ .ajax .but, это показывает Undefined index: is_ajax. почему он не получает form_data? почему это происходит? Какие изменения должны быть сделаны? здесь мой сценарий

function validateForm() 
{ 

    var oldPassword = document.forms["dsettings"]["oldPassword"].value; 
    var newPassword = document.forms["dsettings"]["newPassword"].value; 
    var retypePassword = document.forms["dsettings"]["retypePassword"].value; 


     if (document.forms["dsettings"]["oldPassword"].value == null || oldPassword == "") { 
     alert("Enter old password"); 
     return false; 
    } 

    else if (document.forms["dsettings"]["newPassword"].value == null || newPassword == "") { 
     alert("Enter new password"); 
     return false; 
    } 

    else if (document.forms["dsettings"]["retypePassword"].value == null || retypePassword == "") { 
     alert("Retype new password"); 
     return false; 
    } 

    else if (newPassword != retypePassword) { 
     alert("Retype new password correctly"); 
     return false; 
    } 

    else 
     { 
      var action = $("#dsettings").attr('action'); 
      var form_data = { 
        oldPassword: $('#oldPassword').val(), 
        newPassword: $('#newPassword').val(), 

        is_ajax: 1 
           }; 

      $.ajax({ 
       type: "POST", 
       url: action, 
       data: form_data, 
       success: function(response) 
       { 
        if(response == "success") 
          $("#message").html('<p class="success">Successfully changed password!</p>'); 

        else if(response == "wrong_old_password") 
         { 
          $("#message").html('<p class="error">Wrong old password!type again!</p>'); 
         }  
        else 
         { 
          $("#message").html('<div class="error">update error.Try again! !</div>'); 
         } 
       } 
      }); 

     } 

} 

мой HTML код

<button type="submit" id="submit" name="submit" onclick="return validateForm()" class="form-submit" >submit</button> 

и PHP код

<?php $is_ajax = $_REQUEST['is_ajax']; 
// some codes ?> 
+0

Другие поля отображаются правильно? почему бы вам не попробовать '$ _POST'? – Alex

+0

Я использую $ _POST то же самое происходит. это происходит для всех значений –

+0

проверить консоль в firefox это отправить данные на страницу ??? – john

ответ

0

Попробуйте изменить код на вызов функции с параметром:

function validateForm(e) { e.preventDefault();

и здесь:

<button type="submit" id="submit" name="submit" onclick="validateForm(this); return false;" class="form-submit" >submit</button>

+0

это не работает. –

+0

нет изменений? такое же сообщение об ошибке? – Alex

+0

yes.same error. –

0

Включить JQuery-1.4.3.min.js файл перед вызовом функции validateForm.

<input type="button" name="submit" value="Change Password" onclick="validateForm()" /> 
1

Поскольку это, кажется, ваш первый пост и очень некрасиво, вам нужно очистить это что-то вроде этого (который не является совершенным либо!)

Обеспечить столько же, сколько данных, как это возможно е. г

HTML

<form action="fakeurl.com" method="post" name="dsettings" id="dsettings" > 
    <ul> 
     <li>Old Password: <input type="password" name="oldPassword" /></li> 
     <li>New Password: <input type="password" name="newPassword" /></li> 
     <li>Retype New Password: <input type="password" name="retypePassword" /></li> 
     <li><input type="submit" name="submit" value="Change Password" /></li> 
     <li><div id="message"/></li> 
    </ul> 
</form> 

Javascript

$(document).ready(function(){ 
    $('#dsettings').on('submit',function(event){ 
     changePassword(this) 
     event.preventDefault(); 
    }); 
}); 
function validateChangePassword(frm){ 
    var oldPassword=frm["oldPassword"].value 
    var newPassword=frm["newPassword"].value 
    var retypePassword =frm["retypePassword"].value; 

    if (oldPassword.trim()=="") { 
     $('#message').html("<p class='error'>Enter old password</p>"); 
     return false; 
    } 
    else if (newPassword.trim()=='') { 
     $('#message').html("<p class='error'>Enter new password</p>"); 
     return false; 
    } 
    else if (retypePassword.trim() == "") { 
     $('#message').html("<p class='error'>Retype new password</p>"); 
     return false; 
    } 
    else if (newPassword != retypePassword) { 
     $('#message').html("<p class='error'>Retype new password correctly</p>"); 
     return false; 
    } 
    else 
     return true; 
} 


function changePassword(frm){ 
    if(validateChangePassword(frm)){ 
    var url = $(frm).attr('action'); 
    var data = { 
      oldPassword: $(frm).find('input[name="oldPassword"]').val(), 
      newPassword: $(frm).find('input[name="newPassword"]').val(), 
      retypePassword: $(frm).find('input[name="retypePassword"]').val(), 
      is_ajax: 1 
      }; 
    ajaxPost(url,data); 
    } 
    return false; 
} 

function ajaxPost(post_url,post_data){ 
    $.ajax({ 
     type: "POST", 
     url: post_url, 
     data: post_data, 
     success: function(response) 
     { 
      if(response == "success") 
        $("#message") 
        .html('<p class="success">Successfully changed password!</p>'); 
      else if(response == "wrong_old_password") 
       { 
        $("#message") 
        .html('<p class="error">Wrong old password!type again!</p>'); 
       }  
      else 
       { 
        $("#message") 
        .html('<div class="error">update error.Try again! !</div>'); 
       } 
     } 
    }); 
} 

DEMO

Возможные проблемы

  • Избегайте использования настраиваемых js и jquery mix Я подозреваю, что вы предоставили какой-либо идентификатор элементу, например $ ('# oldPassword').Вал()

  • Существует хороший плагин для формы validation использования, один

0

Из ответов, которые вы дали в комментариях, что почти наверняка происходит в том, что:

  • Вы не препятствуют положению отправки по умолчанию, поэтому происходит поведение отправки по умолчанию.
  • В вашем коде есть ошибка, из-за которой ваша функция validateForm() терпит неудачу и для вас г $.ajax никогда не запускать

Для устранения этого:

  • Изменить кнопку type="button".
  • Откройте консоль JS (обычно это можно сделать, нажав F12 и нажав вкладку «Консоль»).
  • Проверьте, нет ли ошибок в консоли.

После того, как вы выясните, что ошибка, вам необходимо:

  • Прекратите использование onclick обработчиков и ненавязчиво настраивать события
  • Используйте preventDefault() для предотвращения по умолчанию представить события
$(function() { 
    $("#submit").click(function (e) { 
     e.preventDefault(); 
     validateForm(); 
    }); 
}); 
Смежные вопросы