C# 通过Ajax从控制器执行函数
我有一个ASP.NETMVC,我正在尝试使用Ajax从c#函数中获取一个字符串,我尝试过使用Ajax,但似乎没有任何效果 这是我的控制器功能:C# 通过Ajax从控制器执行函数,c#,jquery,ajax,asp.net-mvc,razor,C#,Jquery,Ajax,Asp.net Mvc,Razor,我有一个ASP.NETMVC,我正在尝试使用Ajax从c#函数中获取一个字符串,我尝试过使用Ajax,但似乎没有任何效果 这是我的控制器功能: public string Test() { string test = "hi"; return test; } <script> var textbox = document.getElementById("textbox"); textbox.addEventListe
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>
这是我的脚本标签:
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>
var textbox=document.getElementById(“textbox”);
textbox.addEventListener(“键控”,函数(事件){
如果(event.keyCode===13){
$.ajax({
键入:“GET”,
url:'@url.Action(“测试”,“主页”),
成功:功能(结果){
警报(“hi”);
},
错误:功能(请求、状态、错误){
警报(request.responseText);
}
});
}
});
我认为没有足够的信息给出准确的解决方案。我创建了一个本地MVC应用程序,并添加了一个返回字符串的Test()操作方法,我能够通过ajax代码获得结果
您可以尝试以下几点:
标记放在视图的@部分中,并将@RenderSection
放在\u Layout.cshtml
的底部
// in your view
@section Scripts {
<script>
// your script here
....
</script>
}
解释
我的猜测是,当DOM解析javascript时,不会加载jQuery。如果是这种情况,您的$.ajax
调用将永远无法工作
当前的Visual Studio MVC模板(用于.Net core)将jQuery放在\u Layout.cshtml
的底部。如果在视图中间放置<代码> <代码>标签,它们将出现在浏览器请求jQuery之前。
将
标记放在@section Scripts{}
元素中意味着javascript将实际添加到\u Layout.cshtml
中@RenderSection(“脚本”)
指定的位置 您是否尝试过返回Json(test,JsonRequestBehavior.AllowGet)
而不是像您链接的解决方案中那样的返回测试
。我使用的是net.core,因此无法真正使用JsonRequestBehavior.AllowGetAre是否存在任何控制台错误?您是否验证了实际调用ajax方法的正确性?我会在javascript中添加一些日志,以验证是否调用了ajax方法。控制台不会给出任何错误,但我会执行一些断点,如Jonathan建议的那样,以查看是否实际调用了ajax方法。尝试这样做时,添加脚本标记似乎没有任何异常,虽然事件确实被“调用”,但ajax似乎并没有被调用。运行Fiddler。GET
请求是否正在通过?使用Chrome开发者工具并在$.ajax
行上设置断点。它被击中了吗?在控制器代码中放置断点。它被击中了吗?从浏览器跟踪消息,通过网络跟踪消息,在服务器上跟踪消息,以获得一些信息。