2016-08-04 22 views
0

Ich machte eine Ajax-Website, die php Seiten von einem /pages Ordner in meinem index.php aufrufen, in meiner Seite painting.php ich habe einen Link, der painting-slider.php Seite aufrufen.Ajax innerhalb eines Ajax Erfolg

also wie kann ich diese painting-slider.php in ajax öffnen, wenn ich bereits meine painting.php Seite aufgerufen habe?

das ist meine index.php Anfrage Seite:

<div id="ajax-container"> 
<?php 
    $d = "pages/"; 
    if (isset($_GET['p'])) { 
    $p = strtolower($_GET['p']); 
    if (preg_match("/^[a-z0-9\-]+$/", $p) && file_exists($d . $p . ".php")) { 
     include $d . $p . ".php"; 
    } else { 
     include $d . "404.php"; 
    } 
    } else { 
    include $d . "home.php"; 
    } 
?> 
</div> 

und dies ist meine Ajax-Funktion:

var afficher = function(data, page) { 

    $('#ajax-container').fadeOut(250, function() { 
     $('#ajax-container').empty(); 
     $('#ajax-container').append(data); 
     $('#ajax-container').fadeIn(100, function() {}); 

    }); 
}; 

var lastRequest = null; 
if (lastRequest !== null) { 
    lastRequest.abort(); 
} 

var loadPage = function(page, storeHistory) { 
    if (typeof storeHistory === 'undefined') { 
     storeHistory = true; 
    } 


    lastRequest = $.ajax({ 
     url: "pages/" + page, 
     cache: false, 
     success: function(html) { 
      afficher(html, page); 
      if (storeHistory === true) { 
       history.pushState({ 
        'key': 'value', 
        'url': page 
       }, '', page); 
      } 
     }, 
     error: function(XMLHttpRequest, textStatus, errorThrown) { 
      afficher('erreur lors du chagement de la page'); 
     } 
    }); 

    return false; 
}; 

window.addEventListener('load', function() { 
    setTimeout(function() { 
     window.addEventListener('popstate', function(e) { 
      if (e.state === null) { 
       loadPage('home.php'); 
      } else { 
       loadPage(e['state']['url'], false); 
      } 
     }); 
    }, 0); 
}); 


$('.link').bind('click', function(e) { 
    e.preventDefault(); 
    var page = $(this).attr('href'); 
    loadPage(page); 
    return false; 
}); 
+2

was versuchen Sie zu erreichen? Warum nicht einfach eine neue Ajax-Anfrage innerhalb der '.success()' Methode Ihrer ersten Ajax-Anfrage machen? – messerbill

+0

Ja, aber muss ich ein Ajax-Container-Div mit einer PHP-Include-Funktion in meiner painting.php-Seite neu erstellen? und wo genau muss ich meine seconda ajax funktion einfügen? – Tiaw

Antwort

2

ein einfaches Beispiel für „Ajax nach Ajax ":

$.ajax({ 
    url: "pages/" + page, 
    cache: false, 
    success: function(html) { 
     afficher(html, page); 
     if (storeHistory === true) { 
      history.pushState({ 
       'key': 'value', 
       'url': page 
      }, '', page); 
     } 
     $.ajax({ 
      url: otherUrl, 
      cache: false, 
      success: function(result) { 
      alert("i am the second result"); 
      alert(result); 
      } 
     }); 
    }, 
    error: function(XMLHttpRequest, textStatus, errorThrown) { 
     afficher('erreur lors du chagement de la page'); 
    } 
}); 

Auf der Serverseite (Ihre PHP-Dateien) ist es nicht wichtig, etwas zu tun. Ihr Ajax erhält nur den Rückgabewert des Skripts, das in den angegebenen URLs gefunden wurde. Ich hoffe es hilft

+1

ah ok ja eigentlich ist es einfacher als ich dachte, funktioniert gut danke – Tiaw