【发布时间】:2014-11-17 15:46:20
【问题描述】:
我正在尝试使用 JavaScript 设置从 MVC 页面到控制器的非常简单的调用。这是我的控制器:
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
这是我的视图(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
这是我的 JavaScript(通过 _layout.vbhtml 文件包含):
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");
}
调试时一切都很好地连接起来,但 payload 变量在 SaveData 函数中以 Nothing 的形式出现。我试过使用$.post,但遇到了类似的问题,而且我发现使用这两种方法的所有参考资料都只是假设它第一次可以正常工作并且没有任何故障排除提示。
如何配置$.ajax 或$.post 函数以正确调用控制器并传递简单字符串?
【问题讨论】:
-
尝试将
{ Payload: payload }更改为{ payload: payload }。 -
这很好奇它对 $.ajax 调用没有影响,但第一个 $.post 现在将数据发送到控制器。谢谢。
-
不应该
dataType是"text"而不是String? -
好像没什么区别……
标签: javascript jquery ajax vb.net asp.net-mvc-5