2017-12-27 1 views
2

ich habe das folgende Skript in meinem ASP.NET MVC-Projekt:Warum wird der folgende Jquery Ajax Call nur einmal ausgeführt?

$(function() { 

var ajaxFormSubmit = function() { 
    var $form = $(this); 

    var options = { 
     url: $form.attr("action"), 
     type: $form.attr("method"), 
     data: $form.serialize() 
    }; 

    $.ajax(options).done(function (data) { 
     var $target = $($form.attr("data-otf-target")); 
     var $newHtml = $(data); 
     $target.replaceWith($newHtml); 
    }); 

    return false; 
}; 

$("form[data-otf-ajax='true']").submit(ajaxFormSubmit); 
}); 

warum diese fonction nur einmal ausführt? Diese Funktion dient zum Aktualisieren einer Liste von Objekten, hier ist das Formular in der Rasiereransicht:

+0

Setzen Sie den Javascript-Code außerhalb der 'RestaurantList' div .... vielleicht wird es durch den Ajax-Aufruf überschrieben. – Hackerman

+0

versuchen Sie, Eingabe-Typ 'Button' und führen Sie die obige Funktion mit Jquery' Klick (Funktion) 'und lass es mich wissen .. –

+0

Der Javascript-Code ist in separate Datei, ich gebündelt es mit den JQuery-Skripte (@ Scripts.Render. .) –

Antwort

1

Ihre Funktion wird nicht nur einmal ausgeführt. Das Problem besteht darin, dass Sie bei der ersten Ausführung des Handlers das Element mit der ID RestaurantList durch den vom AJAX-Aufruf zurückgegebenen HTML-Code ersetzen.

Also, das nächste Mal ausgeführt wird, diese Linie

var $target = $($form.attr("data-otf-target")); 

nicht das erwartete Verhalten hat (weil es kein Element mit der ID ist RestaurantList in Ihrem Dokument mehr.

Versuchen Aktualisierung der Inhalt Ihres RestaurantList Element mit dem .html() -Methode statt replaceWith():

$.ajax(options).done(function (data) { 
     var $target = $($form.attr("data-otf-target")); 
     var $newHtml = $(data); 
     $target.html($newHtml); 
    }); 

Auf diese Weise Ihr Element noch hat die gleiche ID. Und die nächste Ausführung Ihres Handlers sollte gut funktionieren.

+0

Danke! es funktioniert perfekt –

Verwandte Themen