我有一个 ASP.net 的MVC,我正在尝试使用Ajax从c#函数中获取字符串,我已经尝试使用此解决方案,但似乎没有任何效果。
这是我的控制器功能:
public string Test()
{
string test = "hi";
return test;
}
这是我的脚本标签:
<script>
var textbox = document.getElementById("textbox");
textbox.addEventListener("keyup", function (event) {
if (event.keyCode === 13) {
$.ajax({
type: 'GET',
url: '@Url.Action("Test", "Home")',
success: function (result) {
alert("hi");
},
error: function (request, status, error) {
alert(request.responseText);
}
});
}
});
</script>
我认为没有足够的信息来提供准确的解决方案。我创建了一个本地 MVC 应用程序并添加了一个返回字符串的 Test(( 操作方法,并且我能够使用您的 ajax 代码获得结果。
您可以尝试的几件事是:
- 确保 $.ajax 确实被调用。因此,如果您有周围的逻辑,请确保它按预期命中
- Ajax 有一个错误回调,您可以将其添加到 AJAX 调用中以查看是否存在错误。这有一个示例如何使用错误回调来查看出了什么问题
将<script>
标签放在视图中@section
内,并将@RenderSection
放在_Layout.cshtml
的底部。
// in your view
@section Scripts {
<script>
// your script here
....
</script>
}
然后把它放在_Layout.cshtml
的底部,并确保它出现在jQuery之后:
@RenderSection("Scripts", required: false)
解释
我的猜测是当DOM解析你的javascript时,jQuery没有加载。 如果是这种情况,您的$.ajax
呼叫将永远无法正常工作。
当前的 Visual Studio MVC 模板(适用于 .Net-core(将jQuery放在_Layout.cshtml
的底部。 如果您将<script>
标签放在视图中,它们将在浏览器请求 jQuery 之前出现。
将<script>
标签放在@section Scripts { }
元素中意味着 javascript 实际上将被添加到@RenderSection("Scripts")
指定的位置_Layout.cshtml
。