2016-07-08 9 views
2

Ich benutze flex slider auf einer Seite und Seite auch eine Ajax Anruf für andere Job. Mein Problem ist, wenn Benutzer laden die Seite, Ajax Anruf Block flex Slider bis Ajax Anfrage wurde nicht abgeschlossen. Nach Abschluss der Ajax-Anfrage wurde der Flex-Slider erfolgreich geladen. Wenn ich ein Ajax-Skript entferne, wird der Flex-Slider sehr schnell geladen.Ajax Anrufsperre andere Javascript-Code

Flex Schieber und Ajax-Request beide zwischen diesem Code geschrieben ...

$(document).ready(function(){ 
    $('#carousel').flexslider({ 
     animation: "slide", 
     controlNav: true, 
     animationLoop: true, 
     slideshow: false, 
     itemWidth: 100, 
     itemMargin: 15,   
     asNavFor: '#slider'   
    }); 

    // Rest code of slider will come here 

    // Ajax code start from here  
    $.ajax({ 
      type: "GET", 
      async:false, 
      url: prefixUrl, 
      success: function(results) { 
        $(results).insertBefore('.event_container'); 
      } 
     }); 

}); 

vorschlagen Bitte alle Ideen, so dass Ajax-Aufruf nicht Slider Flex blockieren sollte.

Danke

+1

Setzen Sie async nicht auf false, wenn Sie nicht blockieren möchten. – kinakuta

+0

@ kinakuta # Auch nicht nach dem Ändern async: true – anil

+0

Konsole Fehler? \ – madalinivascu

Antwort

3

Async falsch wird warten, bis Ihr Vorgang abgeschlossen erhalten.

try this:

$.ajax({ 
     type: "GET", 
     async:true, 
     url: prefixUrl, 
     success: function(results) { 
       $(results).insertBefore('.event_container'); 
     } 
    }); 

// Update 2:

Eigentlich ist es passiert, da Sie Ajax in Ready-Funktion hinzugefügt haben, um bis Ihre Ajax-Seite bereit Ereignis nicht ausgeführt wird, abgeschlossen zu werden. versuchen Sie es aus dem Dokument bereit zu entfernen.

+0

Entschuldigung, schon habe ich es versucht. Es funktioniert nicht. – anil

+0

Ich habe neue Kommentare hinzugefügt, bitte versuchen Sie das..Hope, das Ihr Problem lösen wird –

+0

versucht, aber das gleiche passiert – anil

0

Wir verwenden Ajax, um keine Post-Back-Operation zu erhalten und in Ihrem Code haben Sie async: false erwähnt, was zu einem synchronen Ajax-Aufruf führt. Der synchrone Ajax-Aufruf bewirkt, dass Sie stoppen/blockieren, bis Sie die Antwort für die vorherige Anfrage erhalten. Versuchen Sie Folgendes:

$.ajax({ 
    type: "GET", 
    url: yourURL, 
    success: function(results) { 
      $(results).insertBefore('.event_container'); 
    }, 
    async:true 
}); 
+0

Ändern async: True arbeitet schnell, aber wieder flex Slider Lasten nach Ajax Anfrage abgeschlossen. Gibt es noch eine andere Option, so dass der Flex-Slider und der Ajax-Aufruf nicht voneinander abhängen? – anil

Verwandte Themen