2013-04-13 14 views
6

लक्ष्य:
चरण 1: एक रूप एक JQuery संवाद में खुलता है। उपयोगकर्ता नाम और पासवर्ड दर्ज करता है, लॉगिन पर क्लिक करता है। चरण 2: अजाक्स मेरे मामले loginproc.php में डेटा को सर्वर साइड स्क्रिप्ट पर भेजता है।
चरण 3: loginproc का उपयोग कर लॉगिन मान्य करें। अगर लॉगिन सफल होता है तो उपयोगकर्ता को किसी पृष्ठ पर रीडायरेक्ट किया जाता है।
चरण 4: अन्यथा एक संदेश संवाद पर वापस भेज दिया जाता है और इसे एक शेक प्रभाव के साथ संवाद में जोड़ दिया जाता है।लॉग इन प्रपत्र

यदि मैं '$ ("# admin-form") का उपयोग करता हूं तो अब चरण एक और तीन ठीक काम करता है। Sumbit();' संवाद बंद करने से ठीक पहले। मुझे यकीन नहीं है कि मैं डायलॉग में अमान्य लॉगिन टेक्स्ट कैसे सेट कर सकता हूं।

कोड:

$(function() { 
    var name = $("#name"), 
      password = $("#password"), 
      allFields = $([]).add(name).add(password), 
      tips = $(".validateTips"); 

    function updateTips(t) { 
     tips 
       .text(t) 
       .addClass("ui-state-highlight"); 
     setTimeout(function() { 
      tips.removeClass("ui-state-highlight", 1500); 
     }, 500); 
    } 

    function checkLength(o, n, min, max) { 
     if (o.val().length > max || o.val().length < min) { 
      o.addClass("ui-state-error"); 
      updateTips("Length of " + n + " must be between " + 
        min + " and " + max + "."); 
      return false; 
     } else { 
      return true; 
     } 
    } 

    function checkRegexp(o, regexp, n) { 
     if (!(regexp.test(o.val()))) { 
      o.addClass("ui-state-error"); 
      updateTips(n); 
      return false; 
     } else { 
      return true; 
     } 
    } 

    $("#login-form").dialog({ 
     autoOpen: false, 
     /*  height: 300, */ 
     width: 450, 
     show: { 
      effect: "explode", 
      duration: 1000 
     }, 
     hide: { 
      effect: "explode", 
      duration: 1000 
     }, 
     modal: true, 
     buttons: { 
      "Login": function() { 
       var bValid = true; 
       allFields.removeClass("ui-state-error"); 

       bValid = bValid && checkLength(name, "username", 3, 16); 
       bValid = bValid && checkLength(password, "password", 5, 32); 
       bValid = bValid && checkRegexp(name, /^[a-z]([0-9a-z_])+$/i, "Username may consist of a-z, 0-9, underscores, begin with a letter."); 
       bValid = bValid && checkRegexp(password, /^([0-9a-zA-Z_])+$/, "Password field only allow : a-z 0-9"); 
       if (bValid) { 
        $("#admin_login").submit(); 
        $(this).dialog("close"); 
       } 
      }, 
      Cancel: function() { 
       $(this).dialog("close"); 
      } 
     }, 
     close: function() { 
      allFields.val("").removeClass("ui-state-error"); 
     } 
    }); 

    // Link to open the dialog 
    $("#admin-link").click(function(event) { 
     $("#login-form").dialog("open"); 
     event.preventDefault(); 
    }); 

}); 

इस कोड है, जिसमें मैं कुछ परिवर्तन करने की आवश्यकता की धारा है।

if (bValid) { 
    $("#admin_login").submit(); 
    $(this).dialog("close"); 
} 

कृपया मुझे यह पता लगा मदद

अद्यतन: प्रपत्र:

<form method="post" action="class/loginproc.php" id="admin_login"> 
<fieldset> 
<label for="name">Username</label> 
<input type="text" name="user" id="name" class="text ui-widget-content ui-corner-all" /> 
<label for="password">Password</label> 
<input type="password" name="pass" id="password" value="" class="text ui-widget-content ui-corner-all" /> 
</fieldset> 
</form> 

Loginproc.php

<?php 

require_once 'utils.php'; 
if (is_null($_POST['user']) || is_null($_POST['pass'])) { 
    utils::redirect_url("../index.php"); 
} else { 
    $utils = new utils(); 
    $username = $_POST['user']; 
    $password = $_POST['pass']; 
    $type = 'admin'; 
    $response = $utils->validate_user($username, $password, $type); 
    if ($response == true) { 
     return true; 
     /* 
      $utils->login_redirect($type); */ 
    } else { 
     return false; 
     /* $_SESSION['valid'] = false; 
      utils::redirect_url("../index.php"); */ 
    } 
} 
?> 

Jquery:

if (bValid) { 
var data = $('#admin_login').serialize(); 
$.ajax({ 
url: "class/loginproc.php", 
type: "post", 
data: data, 
dataType: "json", 
success: function(data) { 
if (data.success) { 
    window.location = "../admin.php"; 
} 
else { 
    alert('Invalid Login'); 
    } 
} 
       }); 
       $(this).dialog("close"); 
      } 

समाधान: 'मोहम्मद आदिल' के लिए धन्यवाद, मैं इस बाहर निकालने में सक्षम था। उचित परिणाम प्राप्त करने के लिए मुझे अपने प्रदत्त समाधान को थोड़ा सा बदलना पड़ा। इस प्रकार मैं इसे भविष्य के संदर्भ के लिए यहां पोस्ट कर रहा हूं।
jQuery

if (bValid) { 
    var data = $('#admin_login').serialize(); 
    $.ajax({ 
    url: "class/loginproc.php", 
    type: "post", 
    data: data, 
    dataType: "json", 
    success: function(data) { 
     window.location = "admin.php"; 
    }, 
    error: function(data) { 
     alert('invalid'); 
    } 
    }); 
    $(this).dialog("close"); 
    } 

Loginproc:

$response = $utils->validate_user($username, $password, $type); 
    if ($response == true) { 
     echo true; 
    } else { 
     echo false; 
    } 

सादर
Genocide_Hoax

उत्तर

2
if (bValid) { 
    var data = $('#admin_login').serialize();     
      $.ajax({ 
       url:"loginproc.php", 
       type: "post", 
       data : data, 
       dataType:"text", 
       success:function(data){ 
        if(data == "true"){ 
        window.location = "some location"; 
        } 
       else{ 
         // LOGIN FAILED 
       } 
       } 
      }); 
     $(this).dialog("close"); 
} 
+0

तो, मैं logicproc.php से सफलतापूर्वक लॉगिन पर पृष्ठ को रीडायरेक्ट नहीं करता हूं? मैं बस सच या झूठी वापसी? –

+0

हां, आपको सर्वर से सही झूठी वापसी की आवश्यकता है, आप इसे सर्वर से रीडायरेक्ट नहीं कर सकते क्योंकि यह एक असीमित अनुरोध है। –

+0

मैंने इसे लागू करने की कोशिश की लेकिन यह काम नहीं कर सका।जब मैं लॉगिन –

1

आप में विधि और कार्रवाई डाल प्रपत्र, मुझे लगता है कि अगर अजाक्स के साथ काम कर रहे हैं तो इसे छोड़ा जाना चाहिए क्योंकि यदि छोड़ा नहीं गया है, तो डेटा एसिंक्रोनस नहीं भेजा जाएगा।

संबंधित मुद्दे