2011-08-19 4 views
0

Le code que j'utilise fonctionne bien, mais je suis un peu bloqué à essayer de charger une nouvelle page à partir d'une fonction de succès. La façon la plus simple de le dire est, comment puis-je filtrer les données provenant du backend php pour prendre des décisions? par exemple, j'ai défini une condition dans la page backend testajax.php et dans le test de la fonction de succès ajax pour certaines conditions. En PHP, ce serait quelque chose dans le sens de l'utilisation de l'instruction if. Je suis assez nouveau à jquery donc j'apprécierais quelques conseils sur la façon d'y parvenir. MercijQuery ajax charger la page du succès

$.ajax({ 
    type: "POST", 
    url: "testajax.php", 
    data: data, 
    success: function (data) { 

    $('#login_message').html(data); 
    //$(ok).val('Logged In'); 
    //$("#login").get(0).reset(); 
    //$("#form").dialog('close'); 
    $.mobile.changePage("admin/index.php/", { transition: "slideup"}); 
    }, 
    error:function (xhr, ajaxOptions, thrownError){ 
    alert('There was an exception thrown somewhere'); 
    alert(xhr.status); 
    alert(thrownError); 
    } 
}); 

testajax.php

<?php 
    // test wether the user session is already set 
    session_start(); 
    $userpost = mysql_real_escape_string($_POST['user']); 

    if (!isset($_SESSION['user'])) { 
    $_SESSION['user'] = $userpost; 
    if($_SESSION['user']=='admin') { 
    echo 'Welcome Admin'; 
    // for example, test data in ajax for 
    // this flag and if equal 1 then load admin/index.php 
    $flag = 'admin'; 
    // end of flag 
    echo $flag; 
    } 
    else 
    echo 'Unknown User'; 
    } 
?> 

Répondre

1
<?php 
    // test wether the user session is already set 
    session_start(); 
    $userpost = mysql_real_escape_string($_POST['user']); 

    if (!isset($_SESSION['user'])) { 
    $_SESSION['user'] = $userpost; 
    if($_SESSION['user']=='admin') {   
    $flag = 'admin';   
    echo $flag; 
    } 
    else 
    echo 'Unknown User'; 
    } 
?> 

partie ajax

$.ajax({ 
    type: "POST", 
    url: "testajax.php", 
    data: data, 
    success: function (data) { 

    $('#login_message').html(data); 
    if(data==='admin') 
    { 
    //redirect 
    $.mobile.changePage("admin/index.php/", { transition: "slideup"}); 
    } 

    }, 
    error:function (xhr, ajaxOptions, thrownError){ 
    alert('There was an exception thrown somewhere'); 
    alert(xhr.status); 
    alert(thrownError); 
    } 
}); 
+0

3nigma est-ce la bonne façon de charger une page en ajax $ .mobile.changePage ("admin/index.php /", {transition: "slideUp"}); ou y a-t-il une autre méthode? parce que je suis nouveau, j'essaie de couvrir toutes les bases. merci – bollo

+0

si cela fonctionne alors probablement son correct :) – Rafay

1

Il n'y a rien qui vous empêche d'utiliser si des déclarations dans le code jquery donc en vous callback ajax vous pouvez utiliser:

if (data == 'Unknown User') { 
    alert('Unknown User'); 
} else { 
    //Do some other stuff here 
} 
1

Vous pouvez vérifier la requête s'il s'agit d'une requête ajax et afficher uniquement le contenu requis pour la partie ajax.

if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') 
    { 
     //request by ajax 
    } 
    else 
    { 
     //regular request. 
    }