Ich benutze MVC 5 mit jQuery und habe Schwierigkeiten mit der Veröffentlichung der Anti-Fälschung-Token mit Ajax. Ich habe SO bei verschiedenen Korrekturen angeschaut, aber nichts scheint zu funktionieren.ASP.Net MVC 5 mit jQuery Ajax kann nicht senden __RequestVerificationToken
Ich habe den folgenden Code in meiner Sicht.
@using (Html.BeginForm("None", "None", FormMethod.Post, new { @id = "js-form" }))
{
@Html.AntiForgeryToken()
....
other code
....
<button class="button-primary button expand js-button-search" type="button">Search</button>
}
mit jQuery Dann habe ich über die Klasse, indem Sie das Element einen Event-Handler auf die Schaltfläche oben hinzugefügt: js-button-Suche. Der Haupt-Ajax-Aufruf lautet wie folgt:
$.ajax({
url: url,
method: 'POST',
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(_self.JsonData),
success: function (result) {
// Success code
},
error: function (jqXHR, textStatus, errorThrown) {
// Failure code
}
});
Wo meine Verwirrung ist, ist um den Datenparameter. Ich habe ein Objekt, das bei Bedarf gefüllt wird und eine große Anzahl von Elementen enthält, die für die Suche verwendet werden können.
Das Objekt hat die Form (verkürzt, wie wir Strom von mehr als 40 Suchfelder haben):
_self.JsonData = { "searchData": {"DocIdFrom" : "426737", "DocIdTo" : "753675", "DocIdTypeSearch" : "between", "DocDateFrom" : "06/02/2017", "DocDateTo" : "", "DocDateTypeSearch" : "greater than", .....
etc...
}}
Wie Sie sehen können, werden die Daten mit JSON.stringify analysiert. Das alles funktioniert, solange das [ValidateAntiForgeryToken] -Attribut für die Controller-Funktion auskommentiert ist.
-Controller wie folgt:
[HttpPost]
//[ValidateAntiForgeryToken]
public JsonResult GetSearchResultsJson(SearchCriteria searchCriteria, int? page)
{
// code in here
}
Als ich Kommentar- der Antifälschungs Attribut, die Seite nicht mehr funktioniert.
Jetzt weiß ich über die Notwendigkeit, die Token passieren über mit der Post und habe folgende ohne Erfolg versucht:
how-can-i-supply-an-antiforgerytoken-when-posting-json-data-using-ajax asp-net-mvc-5-ajax-request-on-edit-page-error-requestverificationtoken-is-not
Der wesentliche Unterschied zwischen dem, was ich habe scheint ein komplexes Objekt zu sein, , aber ich denke, das ist ein Ablenkungsmanöver, da Stringify das Objekt in eine Zeichenkette umwandelt.
Sorry, habe vergessen hinzuzufügen. Fiddler geben die folgende Meldung, wenn die [ValidateAntiForgeryToken]
[Fiddler] ReadResponse() failed: The server did not return a complete response for this request. Server returned 0 bytes.
noch daran arbeiten. Ich habe das Token in der Kopfzeile des Ajax-Anrufs hinzugefügt und Chrome meldet die folgende Meldung: "Unerwartetes Token
gilesrpa
Ich kann den Code nicht mit Formatierung hinzufügen, hier ist die Grundlage dafür: get_searchInputs: function ({) this.JsonData = { "search": { "docIdFrom": docSearch.elem.inputs.txtDocIdFrom.val(), "docIdTo": docSearch.elem.inputs.txtDocIdTo.val(), "ticketSearchTextTo": docSearch.elem.inputs.searchTextTo.val(), etc .... – gilesrpa
Jetzt habe ich das folgende noch ohne Erfolg versucht. https://weblogs.asp.net/dixin/anti-forgery-request-recipes-for-asp-net-mvc-and-ajax – gilesrpa