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?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage