【发布时间】:2021-08-10 23:17:20
【问题描述】:
问题底部的更新说明
我在进行从 JavaScript 到 C# 控制器的 AJAX 调用时遇到问题。我很确定我的问题是我对 javascript 文件的 AJAX 调用的连接 url。如果连接 url 不是问题,那么我认为这可能是我的 C# 控制器中的问题。我知道 jQuery 已正确加载,因为我能够在 RunDemo 函数中的 AJAX 调用之前控制日志信息。
以下是对我要完成的工作的解释:
我有一个带有一个按钮的简单 html 页面。单击按钮时,我需要对我的 c# 控制器进行 ajax 调用并检索一个字符串。在 AJAX 成功后,我会在 html 页面上提醒用户从 C# 控制器检索到的消息。这是我的“TheDemo”存储库的图片:
这是我的“索引”html 页面:
<!DOCTYPE html>
<html>
<head>
<title>The Demo</title>
<script type="text/javascript" src="../Scripts/jquery-3.6.min.js"></script>
<script type="text/javascript" src="../Scripts/demo.js"></script>
</head>
<body>
<div class="demo-container">
<h1>Demo</h1>
<button type="button" id="SubmitButton">Submit</button>
</div>
</body>
</html>
这里是 "demo.js" javascript 文件:
//Function makes an ajax to the controller
function RunDemo(){
$.ajax({
url: '/Demo/RunDemo',
type: 'POST',
dataType: 'json',
success: function (retData)
{
console.log(retData);
alert(retData.Message);
},
error: function (retData)
{
console.log(retData);
}
});
}
//Event handles the "Submit" button
$(document).on("click", "#SubmitButton", function () {
RunDemo()
});
这里是“DemoController.cs”C#文件:
using System;
class DemoController : Controller
{
[HttpPost]
public JsonResult RunDemo()
{
object obj = new { Message = "Return From Controller" };
return Json(obj, JsonRequestBehavior.AllowGet);
}
}
更新:
我已经修复了 ajax 连接 url。还是不行,我已经更新了谷歌浏览器控制台的镜像。
更新 2:
我注意到这可能是我打开文件的方式。目前,我正在使用 Google Chrome 检查器打开 html 页面。我不是在 Visual Studio 代码中“运行”一个进程。我需要在什么地方托管 C# 控制器吗?
谢谢!
【问题讨论】:
-
控制器的 url 由路由定义,而不是由名称定义。默认路由使用名称,因此可能看起来像名称一样,但您可以在不更改名称的情况下更改路由。
标签: javascript c# jquery ajax