c# - C# MVC Ajax 调用返回未定义
问题描述
我是 ajax 新手,正在尝试将用户名值发送到 Answer 函数,然后将其返回给视图,但无论我尝试什么,我都无法定义。
//来自 HomeController.cs 的应答函数
[HttpPost]
public string Answer(string userName)
{
return userName;
}
//来自视图的ajax调用
$.ajax({
type: "POST",
url: "/Home/Answer",
contentType: "application/json; charset=utf-8",
data: '{"userName":"' + message + '"}',
dataType: "html",
success: function (result, status, xhr) {
alert(message);
outputArea.append(`
<div class='user-message'>
<div class='message'>
${result}
</div>
</div>
`);
},
error: function (xhr, status, error) {
alert("Something went wrong");
}
});
解决方案
具体到您的情况,您可以参考此代码段来获取所需的数据:
<script>
//Now generate your JSON data here to be sent to the server
var json = {
messageVariable: message
};
//Send the JSON data via AJAX to your Controller method
$.ajax({
url: '@Url.Action("Answer", "Home")',
type: 'post',
dataType: "json",
data: { "json": JSON.stringify(json)},
success: function (result) {
console.log(result);
},
error: function (error) {
console.log(error)
}
});
</script>
你的控制器看起来像:
using System.Web.Script.Serialization;
[HttpPost]
public ActionResult Answer(string json)
{
var serializer = new JavaScriptSerializer();
dynamic jsondata = serializer.Deserialize(json, typeof(object));
//Get your variables here from AJAX call
var message= jsondata["messageVariable"];
//Do something with your variables here.
return Json(new { success = true, messageVariable }, JsonRequestBehavior.AllowGet);
}
推荐阅读
- postgresql - EF Core 2.0 更新 - 跟踪问题
- c++ - 在 Visual c++ 中使用 WebRTC 库
- r - 遵循模式时按名称获取列索引
- python - 如何使用 python 获取 FTP 的当前工作目录
- javascript - this.props.history.router 不适用于 websocket 的第一个触发器
- dart - 如何在 Fluro 或 Flutter 路由导航器中传递对象或对象列表?
- visual-studio-code - 我正在使用 PyGame 在 python3.6.5 中创建蛇游戏。这是初始代码,它在 PyCharm 上运行良好。但是我在 VSCode 中遇到了问题
- ruby-on-rails - Ruby on Rails,Api::UsersController#create 中的 Net::SMTPAuthenticationError
- jenkins - Jenkinsfile 的字符串插值和连接
- javascript - 使用 JavaScript 添加 JSON-LD