2016-03-23 6 views
0

Ich benutze das folgende Skript und es erfolgreich entfernen den zugrunde liegenden Datensatz aus der Datenbank. Beim Klicken auf die Bestätigung passiert jedoch überhaupt nichts. Bedeutung Ich muss beide Pop-ups schließen und dann F5 im Browser drücken, um die Ergebnisse zu sehen. Ich habe viele Dinge ausprobiert, aber muss einfach etwas sein, ich bin hier fehltJQUERY nicht schließen Pop-up und Seite aktualisieren

function deletePayment(customerPaymentId) { 
    //alert(customerPaymentId); 
    bootbox.confirm("Are you sure? This payment will be logically deleted", function (result) { 
     if (result) { 
      var url = '/CustomerPayment/Delete'; 
      var data = { 
       id: customerPaymentId 
      }; 

      $.post(url, data, function() { 

       window.location.reload(); 
      }); 



     } 
    }); 
    return false; 
} 

Steuerungskode UNTEN:

//[HttpPost, ActionName("Delete")] 
//[ValidateAntiForgeryToken] 

//[Authorize(Roles = "Delete")] 
public ActionResult Delete(int id) 
{ 

    CustomerPayment obj = _db.GetCustomerPayment(id); 

    _db.Edit(obj); 

    obj.TransactionDateTimeEnd = DateTime.Now; 
    _db.Save(); 




    return View("Index", new { id = obj.CustomerId}); 
} 
+0

herausnehmen false? Bist du sicher, dass du Jquery mit einbaust? – KyleK

+0

werfen Sie einen Blick auf die jquery Dokumente für $ .post: http://api.jquery.com/jquery.post/ Sie implementieren nur die 'success' Handler für $ .post, wenn der Beitrag fehlschlägt (nicht Rückgabe mit einem 200 (OK) Statuscode), das Fenster wird nie neu geladen. –

+0

Es gibt keinen Grund, Ajax zu verwenden, wenn Sie nur 'window.location.reload();' aufrufen möchten, um die Seite neu zu laden. –

Antwort

0

Hier ist der richtige Code habe ich getestet.

Ich würde Ihnen sagen, zu entfernen falsch und den Ajax Anruf wie unten explizit Rückruf Erfolg und Fehler zu machen.

$(document).on("click", ".alert", function (e) { 
      bootbox.confirm("Delete payment ???", function (result) { 
        if (result) { 
         alert('delete fired'); 
         $.ajax({ 
          type: "GET", 
          url: "Jquery-datatable.aspx/GetJsonEmps", 
          data: "{}", 
          dataType: "json", 
          contentType: "application/json; charset=utf-8", 
          success: function (response) { 
           alert('ok'); 
           location.reload(); 
          }, 
          error: function (xhr, ajaxOptions, thrownError) 
          { 
          alert(xhr.responseText); 
          location.reload(); 
          }  
         }); 
        } 
       }); 
      }); 

Anmerkung: Ich habe oben Beispiel aus Gründen der testing.You müssen ersetzen Sie den rquest Typ POST und Anfrage url und fügen data Parameter schnell geprüft.

0

Für Controller

public JsonResult Delete(int? id) 
     {   
      if (isSuccess) 
       return Json(new { Success = true, Message = "" }, JsonRequestBehavior.AllowGet); 
      else 
       return Json(new { Success = false, Message = error }, JsonRequestBehavior.AllowGet); 
     } 

und Ihr Skript unten Zeile hinzufügen

window.location.href = window.location.href; 

Lassen Sie mich wissen, wenn Sie Fragen haben.

Verwandte Themen