首页 > 解决方案 > 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");
        }
    });

标签: c#jqueryasp.net-mvc

解决方案


具体到您的情况,您可以参考此代码段来获取所需的数据:

<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);
}

推荐阅读