2013-12-14 13 views
5

Wenn der Button "getproduct" geklickt wird, erhält der Ajax-Anruf das Produkt oder den 404-Code, wenn das Produkt nicht verfügbar ist.So wiederholen Sie den Ajax-Anruf bis zum Erfolg

Ich möchte, dass die Funktion getMyJson alle 5 Sekunden erneut aufgerufen wird, bis das Produkt zurückgegeben wird.

Irgendwelche Ideen?

$(function() { 
    $("#getproduct").click(function getMyJson() { 
     $.ajax({ 
      type: "GET", 
      url: "Product/GetProduct", 
      dataType: "json", 
      success: function (data) { 
       //alert("succes"); 
       $("#name").html(data.Name); 
       $("#price").html(data.Price); 
      }, 
      error: function() { 
       //alert("fail"); 
       //callback getMyJson here in 5 seconds 
      } 
     }); 
    }); 
}); 

Antwort

13

Sie können setTimeout in error Callback-Funktion verwenden

$(function() { 
    function getMyJson() { 
     $.ajax({ 
      type: "GET", 
      url: "Product/GetProduct", 
      dataType: "json", 
      success: function (data) { 
       //alert("succes"); 
       $("#name").html(data.Name); 
       $("#price").html(data.Price); 
      }, 
      error: function() { 
       //alert("fail"); 
       //callback getMyJson here in 5 seconds 
       setTimeout(function() { 
        getMyJson(); 
       }, 5000) 
      } 
     }); 
    } 
    $("#getproduct").click(function() { 
     getMyJson(); 
    }); 
}); 
+0

Es funktioniert perfekt. Danke vielmals :-) – Maxime

Verwandte Themen