2016-07-11 7 views
0

In meinem unteren Code, wenn Eingabe Such Vale ist leer und ebenso Suchwort ist gleich bedeutet, wenn eingegeben 'abc' bekam das Ergebnis erneut angeklickt müssen die Ajax Anfrage abzubrechen, hatte ich in preatsend Methode geschrieben aber Browser werfen Fehler "Can not Eigenschaft 'Abbruch' undefinierter lesen"Wie ajax Anfrage

ajax-Code:

function makeRequest() 
    { 
    var searchText=''; 
     var popupRequest = $.ajax({ 
      url:"cnc/cncstorelocator", 
      type:'GET', 
      cache:false, 
      data: {searchCriteria : $('#cnc-searchcriteria').val()}, 
      dataType: 'json', 
      beforeSend: function(){    
    if(searchText == '' && searchText == searchData) { 
         popupRequest.abort(); 
        } 
       }, 
      success : function(cncStoreLocatorData) 
      { 
       var store=null; 
       for (var i = 0; i < cncStoreLocatorData.length; i++) { 
        var loc = cncStoreLocatorData[i]; 
       store = $('<div/>').addClass('pane'); 
        var store_hours = loc.hrsOfOperation; 
       var str1 = $('<p/>').addClass('stores-timing'); 
       var store_timings=null; 
        for (var j = 0; j < store_hours.length; j++) { 
         var storetime = store_hours[j]; 
         store_timings = str1.append($('<span/>').html('<strong>' + storetime.days_short)); 
         store_timings.appendTo(store); 
        } 
        $("#cncstorepane").append(store); 
        searchText=searchData; 
        } 
      }, 
      error: function(cncStoreLocatorData) { 
        alert("can't make req"); 
       } 

      }); 

    } 
+0

Wo ist 'popupRequest' definiert? –

+0

Mögliches Duplikat von [Ajax-Anfragen mit jQuery abbrechen] (http://stackoverflow.com/questions/446594/abort-ajax-requests-using-jquery) – astroanu

+0

anstelle von popupRequest.abort() benutze searchText.abort() –

Antwort

1
var xhr = $.ajax({ 
    type: "POST", 
    url: "XXX.php", 
    data: "name=marry&location=London", 
    success: function(msg){ 
     alert("The Data Saved: " + msg); 
    } 
}); 

//kill the request 
xhr.abort() 
+0

Gemäß meinem Code, wenn ich meine AJAX-Anfrage abbricht, wo popupRequest.abort() hinzugefügt nach dem REUEST endet, wenn ich auf Suche mit leerem Eingabefeld klicke, zeigt es zuerst error alert() an und nachdem es weiter geladen wird. – koder

+0

können Sie es im Konstruktor usw. initialisieren? – user1012506

+0

Ja, könnten Sie bitte meinen Code einmal besuchen. – koder

0
var xhr = null; 
function makeRequest() 
    { 
    if(xhr != null) { 
      xhr.abort(); 
      xhr = null; 
     } 
    var searchText=''; 
     xhr = $.ajax({ 
      url:"cnc/cncstorelocator", 
      type:'GET', 
      cache:false, 
      data: {searchCriteria : $('#cnc-searchcriteria').val()}, 
      dataType: 'json', 
      beforeSend: function(){    
      if(searchText == '' && searchText == searchData) { 
         xhr.abort(); 
        } 
       }, 
      success : function(cncStoreLocatorData) 
      { 
       var store=null; 
       for (var i = 0; i < cncStoreLocatorData.length; i++) { 
       var loc = cncStoreLocatorData[i]; 
       store = $('<div/>').addClass('pane'); 
       var store_hours = loc.hrsOfOperation; 
       var str1 = $('<p/>').addClass('stores-timing'); 
       var store_timings=null; 
       for (var j = 0; j < store_hours.length; j++) { 
        var storetime = store_hours[j]; 
       store_timings = str1.append($('<span/>').html('<strong>' + storetime.days_short)); 
         store_timings.appendTo(store); 
        } 
        $("#cncstorepane").append(store); 
        searchText=searchData; 
        } 
      }, 
      error: function(cncStoreLocatorData) { 
        alert("can't make req"); 
       } 

      }); 

definieren Sie eine Variable und geben Sie Ihre ajax den gleichen Alias. Dann überprüfen Sie jedes Mal, wenn die Funktion ausgeführt wird, ob (in diesem Beispiel XHR) null ist oder nicht. Wenn dies nicht der Fall ist, brechen Sie ab() und geben ihm erneut den Wert Null.

+0

Danke für die schnelle Antwort, ich folgte der Art und Weise wie Sie vorgeschlagen wurden, aber es hat mein Problem nicht gelöst, vielleicht mache ich etwas falsch, wenn Sie in meinem Code sehen (if (searchText == '' && searchText == searchData) wo ich überprüfen muss, ob mein Eingabetext null ist und mit demselben Schlüsselwort die Ajax Anfrage abbrechen muss – koder

+1

@koder Die Variable searchData kann auch nicht vor diesem Punkt funktionieren: if (searchText == '' && searchText == searchData)? An keiner Stelle sagst du, was searchData ist. Es scheint, als ob du einen Ajax-Aufruf innerhalb eines Ajax-Aufrufs benötigst. Der erste bekommt die searchData und dann kannst du prüfen, ob searchData und searchText gleich sind und dann du Mach den Ajax Call, den du oben notiert hast. –