2013-04-10 5 views
-2

У меня есть страница, которая загружается, а затем, когда загрузка завершена, она использует Jquery для загрузки содержимого в поле. Эта коробка содержит форму. То, что я хотел, это сделать, чтобы отправить форму через jQuery. Однако, когда я его пытаюсь, страница просто обновляется, и я получаю переменные GET в строке URL.jQuery не отправляет форму после .load()

JQuery, делает нагрузку и предположим, представить форму:

$(document).ready(function(){ 
$("#passchangebox").load("boxes/settings_security_password.php?uID=" + uID, function() { 
    $(".form_error").hide(); 
    $("#changepasswordloader").hide(); 
}); 
$("#passwordchange").submit(function(event) { 
    $('.form_error').hide(); 
    var pass = $("input#pass").val(); 
    if (pass === "") { 
     $("#pass_error").show(); 
     $("input#pass").focus(); 
     return false; 
    } 
    cpass = $("input#cpass").val(); 
    if (cpass === "") { 
     $("#cpass_error").show(); 
     $("input#cpass").focus(); 
     return false; 
    } 
    if(pass !== cpass){ 
     $("#match_error").show(); 
     $("input#cpass").focus(); 
     return false; 
    } 
    email = $("input#email").val(); 
    $.ajax({ 
     type: "POST", 
     url: "functions/settings_passwordchange.php", 
     data: $('#passwordchange').serialize(), 
     success: function(result) { 
      if(result == 1){  
       $('input#pass').val(""); 
       $('input#cpass').val(""); 
       $('#payment_window_message_success').fadeIn(300); 
       $('#payment_window_message_success').delay(3000).fadeOut(700); 
       return false; 
      } 
     }, 
     error: function() { 
      $('#payment_window_message_error_mes').html("An error occured, form was not submitted"); 
      $('#payment_window_message_error').fadeIn(300); 
      $('#payment_window_message_error').delay(3000).fadeOut(700); 
     } 
    }); 
    event.preventDefault(); 
    return false; 
    }); 
}); 

РНР, который загружается на страницу, и содержит форму:

<?php 
//get required config file and check login 
if([email protected]("../connect.php")){ 
    echo"<aside> 
     <div class='error' id='errorconnecthide-this'> 
      <img src='http://resources.domain.co.nz/backgrounds/icon_error.png' class='messageimg' /> 
      <h4>Error - Current Page</h4> 
      <p>There was an error making a connection to the database. Please try again later.</p> 
     </div> 
    </aside>"; 
} elseif(isset($_GET['uID'])){ 
    $uID = strip_tags(stripslashes($_GET['uID'])); 
    if(!is_numeric($uID)){ 
     echo"<aside> 
      <div class='error' id='errorconnecthide-this'> 
       <img src='http://resources.domain.co.nz/backgrounds/icon_error.png' class='messageimg' /> 
       <h4>Error - User</h4> 
       <p>There was an error retrieving the user information. Please try again later.</p> 
      </div> 
     </aside>"; 
    } else { 
     //GET THE USERS EMAIL 
     $get_custInfo = 'singleuser'; 
     $userInfo_ID = $uID; 
     if(!include("../classes/global_userinfo_details.php")){ 
      echo"<aside> 
       <div class='error' id='errorconnecthide-this'> 
        <img src='http://resources.domain.co.nz/backgrounds/icon_error.png' class='messageimg' /> 
        <h4>Error - User</h4> 
        <p>There was an error retrieving the user information. Please try again later.</p> 
       </div> 
      </aside>"; 
     } else { 
      $details = mysqli_fetch_assoc($userInfo_qry); 
      $email = stripslashes($details['userinfo_email']); 
      echo"<form class=\"halfboxform\" id=\"passwordchange\"> 
       <fieldset> 
        <br /> 
        <input type=\"hidden\" id=\"email\" value=\"$email\" /> 
        <label for=\"pass\">New Password:</label> 
        <input type=\"password\" name=\"pass\" id=\"pass\" size=\"45\" /> 
        <p class=\"form_error clearb red input\" id=\"pass_error\">This field is required.</p> 
        <label for=\"cpass\" class=\"clearb\">Confirm:</label> 
        <input type=\"password\" name=\"cpass\" id=\"cpass\" size=\"45\" /> 
        <p class=\"form_error clearb red input\" id=\"cpass_error\">This field is required.</p> 
        <p class=\"form_error clearb red input\" id=\"match_error\">Those passwords didnt match.</p> 
        <br class=\"clearl\" /> 
        <br /> 
        <input type=\"submit\" value=\"Update Login Details\" class=\"submit\" /> 
       </fieldset> 
       <div class='clear'></div> 
      </form>"; 
     } 
    } 
} else { 
    echo"<aside> 
     <div class='error' id='errordisplayhide-this'> 
      <img src='http://resources.domain.co.nz/backgrounds/icon_error.png' class='messageimg' /> 
      <h4>Error - Unknown</h4> 
      <p>There was an error retrieving the necessary information. Please try again later.</p> 
     </div> 
    </aside>"; 
} 
?> 

Любая помощь по этому вопросу будет очень ценна: D

+0

Вы получаете запросы на сервер? –

+1

Я заметил, что у вас, кажется, есть строка 'header()', после того, как она повторяет совсем немного кода. Не следует ли 'header()' быть первым, прежде чем что-либо еще выводится на страницу? – vertigoelectric

+0

На сервере отсутствуют запросы. И да для заголовка(); Это было изменено, это было очень плохо в склеивании. –

ответ

0

Решение было перемещением функции отправки в функцию успешной загрузки, как показано ниже:

$(document).ready(function(){ 
    $("#passchangebox").load("boxes/settings_security_password.php?uID=" + uID, function() { 
     $(".form_error").hide(); 
     $("#changepasswordloader").hide(); 
     $("#passwordchange").submit(function(event) { 

Был уверен, что я пробовал это раньше, и он не работал, будь то комбинация изменений, сделанных из предложений комментариев, которые я не уверен. Возможно, кто-то может просветить, почему ?! Спасибо всем, кто прокомментировал и помог с улучшениями.

+1

Я вижу. Вы пытались связать событие до того, как существовал элемент. – vertigoelectric

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