Verwenden Sie $ .ajax oder $ .post, um die MVC 5-Controller-Methode aufzurufen
Ich versuche, mithilfe von JavaScript einen einfachen Aufruf von einer MVC-Seite an einen Controller einzurichten. Das ist mein Controller:
Imports System.Web.Mvc
Namespace Controllers
Public Class DataController
Inherits Controller
Function Index() As ActionResult
Return View()
End Function
<HttpPost>
Function SaveData(payload As String) As String
If payload IsNot Nothing AndAlso payload.Length > 0 Then
Return "Good"
Else
Return "Bad"
End If
End Function
End Class
End Namespace
dies ist meine Ansicht (Index.vbhtml):
@Code
ViewData("Title") = "Index"
End Code
<h2>Index</h2>
@Code
Html.BeginForm()
@:<a href="#" onclick="SaveData();">Save Data</a>
Html.EndForm()
End Code
und dies ist mein JavaScript (enthalten über die _layout.vbhtml-Datei):
function SaveData() {
var payload = "TEST_DATA_GOES_HERE";
// Calls controller correctly but data is null
$.ajax({
url: "/Data/SaveData",
type: "POST",
processData: false,
dataType: String,
data: { payload: payload }
})
.done(function () { alert('Application saved.'); })
.fail(function () { alert('Application failed to save.'); });
// Returns a 500 error
$.post("/Data/SaveData", { Payload: payload }, function (data) { alert('Application saved. ' + data); }, "String");
// Calls controller correctly but data is null
$.post("/Data/SaveData", payload, function () { alert('Application saved.' + data); }, "String");
}
Everything verbindet sich gut beim Debuggen, aber diepayload
Variable kommt alsNothing
in demSaveData
Funktion. Ich habe versucht mit$.post
aber mit ähnlichen Problemen und allen Hinweisen, die ich zu beiden Methoden gefunden habe, gehe ich einfach davon aus, dass es beim ersten Mal fehlerfrei funktioniert und keine Tipps zur Fehlerbehebung gibt.
Wie konfigurierst du das$.ajax
oder$.post
ruft eine Steuerung korrekt auf und übergibt eine einfache Zeichenfolge?