【问题标题】:Can not send data from c#(controller) to javascript无法将数据从 c#(控制器)发送到 javascript
【发布时间】:2020-08-21 10:33:59
【问题描述】:

我的 JavaScript 文件中有这段代码:

temp="string";
var myJson = JSON.stringify(temp);
    $.ajax(
        {
            url: '/MemoryGame/updateStatus',
            type: 'POST',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: myJson,
            success: function (response) {
                alert("success");
                if (response == 'Okay') {
                    checkStatus(temp.myID);
                }
               else {
                    ConnectionChanged();
                }
            },
            error: function (errorThrown) {
                console.log(errorThrown);
                ConnectionChanged();
            }
        });

还有这个控制器:

[HttpPost]
        public string updateStatus(string updatedJson)
        {

            var Player = JsonConvert.DeserializeObject<GameDataClass>(updatedJson);
            var Opponent = JsonConvert.DeserializeObject<GameDataClass>(System.IO.File.ReadAllText(System.IO.Path.Combine(_env.WebRootPath, Player.OpponentID + ".json"))); 
... }

我尝试将 $.ajax 更改为 $.post 方法,也更改了

公共字符串更新状态

公共 JsonResult 更新状态

但这两种方法都不起作用。 javascript 上的 myJson 包含数据,但当它到达控制器时,updatedJson 为空。我从来没有过这样的经历,所以我正在使用另一个项目中的这段代码,它在那里工作得很好。那么有人可以建议我做错了什么吗?

【问题讨论】:

  • 这是 MVC 还是 WEBAPI 控制器?
  • @developer MVC 控制器
  • 是进入成功块还是错误?你从updateStatus返回什么?你在responseerrorThrown 中得到什么值?
  • @adiga 哦,我忘了写。 javascript 上的 myJson 不是空的,它有数据,但是当它到达控制器时 updateJson 是空的
  • 试试data: { updatedJson: myJson }

标签: javascript ajax asp.net-mvc post


【解决方案1】:
    temp="string";
    // (0)
    var myJson = JSON.stringify(temp);
    $.ajax(
        {
            url: '/MemoryGame/updateStatus?updatedJson=' + temp, // (1)
            type: 'POST',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: '',   // (2)
            success: function (response) {
                alert("success");
                if (response == 'Okay') {
                    checkStatus(response.myID);
                }
               else {
                    ConnectionChanged();
                }
            },
            error: function (errorThrown) {
                ConnectionChanged();
            }
        });

或者,如果这不必作为参数传递,则执行以下操作: (0) var formData = new FormData(); formData.append('updatedJson', temp); (1) url: '/MemoryGame/updateStatus', (2) 数据:formData,

【讨论】:

    【解决方案2】:

    $.ajax 是 jQuery 库中的一个函数,您的项目是否包含它?

    您还可以检查浏览器的 Javascript 控制台,看看它是否包含错误。在 Firefox 和 Chrome 上,您可以按 F12 访问它。

    【讨论】:

      猜你喜欢
      • 2019-07-25
      • 1970-01-01
      • 2017-07-07
      • 1970-01-01
      • 2016-11-15
      • 1970-01-01
      • 2016-10-04
      • 2017-10-23
      • 2016-07-22
      相关资源
      最近更新 更多