2016-08-01 27 views
1

Ich möchte Wert in die Datenbank einfügen und mit $ .getJson() Methode Ich überprüfe, ob mein Wert in der Datenbank existiert und wenn ich $ .ajax aufrufen möchte, um es in die Datenbank zu setzen, habe ich das versucht und modale Dialog erscheint aber Methode weiter mit der Ausführung und ich meine Anwendung ist jedes Mal gebrochen, wie die Ausführung zu verhindern, nachdem Modal-Dialog erscheint Ich versuche, $ .ajax in anderen Block zu setzen, aber nichts, dann habe ich versucht, aber nichts?

enter $("#btnSave").click(function (e) { 
    e.preventDefault(); 

    var form = $(this).closest("#forma1"); 

    $.ajax({ 
     type: "POST", 
     url: form.attr("Create"), 

     data: $.getJSON("/InspekcijskeKontrole/Check?id1=" + $("#kombo3").val() + "&id2=" + $("#kombo4").val(), function (data) { 

      if (data.InspekcijskoTijeloId != -1 && data.ProizvodId != -1) { 
       $.getJSON("/Proizvodi/VratiIme/" + data.ProizvodId, function (ime) { 

        if (ime != null) { 
         $("#modalni1 p").text("Inspekcijska kontrola za " + ime + " je vec izvrsena"); 
         $("#modalni1").modal({ backdrop: "static" }); 

        } 
       }); 

      } 

     }), 
     data:form.serialize(), 

     success: function (response) { 

     alert("Informacije su uspjesno ubacene"); 
     window.location.href = "/InspekcijskeKontrole/Index"; 


     }, 
     error: function (greska) { 
      alert("Doslo je do greske pri ubacivanju"); 
     } 

    }); 

});code here 
+0

aber warum verwenden Sie zwei 'getJSON' Requesten? – mmushtaq

+0

Eins, um zu prüfen, ob ein Objekt vorhanden ist, und eins, um den Namen eines Objekts abzurufen, wenn Informationen zum modalen Dialog angezeigt werden. – jhony3

+1

Mögliches Duplikat von [Wie gebe ich die Antwort von einem asynchronen Aufruf zurück?] (Http://stackoverflow.com/questions/14220321/how-do-i-Return-die-Antwort-von-einem asynchronen Anruf) –

Antwort

1

Das funktioniert nicht, weil die beiden inneren „Check“ und „VratiMe“ Ajax-Aufrufe beenden nach die Post bereits abgeschlossen hat.

Weil sie asynchron sind (dh Warteschlange und Rückkehr sofort und dann zu einem späteren Zeitpunkt abgeschlossen).

sollten Sie in der Lage sein, die Reihenfolge der Anrufe zu so etwas wie zu ändern: in einer Anfrage

var form = $(this).closest("#forma1"); 

$.getJSON("/InspekcijskeKontrole/Check?id1=" + $("#kombo3").val() + "&id2=" + $("#kombo4").val(), function (data) { 

    if (data.InspekcijskoTijeloId != -1 && data.ProizvodId != -1) { 
     $.getJSON("/Proizvodi/VratiIme/" + data.ProizvodId, function (ime) { 

      if (ime != null) { 
       $("#modalni1 p").text("Inspekcijska kontrola za " + ime + " je vec izvrsena"); 
       $("#modalni1").modal({ backdrop: "static" }); 
      } 
     }); 
    } 
    else { 

     $.ajax({ 
      type: "POST", 
      url: form.attr("Create"), 

      data:form.serialize(), 

      success: function (response) { 

      alert("Informacije su uspjesno ubacene"); 
      window.location.href = "/InspekcijskeKontrole/Index"; 


      }, 
      error: function (greska) { 
       alert("Doslo je do greske pri ubacivanju"); 
      } 

     }); 
    } 
}); 
+0

Ich versuchte so, aber nichts funktioniert Ich bin für eine lange Zeit stecken geblieben dann habe ich Fehler für __RequstVerificationToken ist nicht vorhanden, aber Token ist Include innerhalb serialize(); – jhony3

+0

Erstellt ein Update und verschoben die sonst aufgrund Ihrer zusätzlichen Angaben in der Frage und Kommentare –

+0

So ist die Frage: Sendet Ihr Formular * ohne * die Scheckanrufe? Klingt so, als ob es das nicht ist, was ein völlig anderes Problem ist und nichts mit Ajax-Calls zu tun hat. –

1

Warum nicht tun, um die Kontrolle und möglichen Einsatz? Ich würde es vorziehen, es in einer Anfrage zu tun!

Aber okay, das war nicht die Frage. Um das Ergebnis von $.getJSON in $.ajax zu verwenden, setzen Sie es in den Erfolgsrückruf von $.getJSON. Wie folgt:

$.getJSON("getJsonUrl.html", function(responseOne) { 
    $.getJSON("anotherJsonRequest.html", function(responseTwo) { 
     $.ajax({ 
      url: "ajaxUrl.html", 
      type: "POST", 
      data = responseTwo 
     }); 
    }); 
});