有没有一种方法可以检测为什么Ajax调用未将其发送到MVC中的控制器?

时间:2019-05-01 08:39:12

标签: javascript jquery ajax asp.net-mvc-5

当我单击按钮时,我正在尝试拨打AJAX电话。我的程序应该向服务器发送请求以获取一些数据并将其显示在页面上。为了使事情简单,我首先需要了解如何使AJAX调用正常工作。我尝试了以下方法:

我在ASP.Net MVC5 C#中的控制器:

[HttpPost]
public string MyMethod(int somePara)
{
    return "it worked";
}

我的AJAX通话:

$("button#test").on("click", function() {
  $.ajax({
    type: "POST",
    url: loc + "/MyMethod",
    data: somePara = "",
    success: function(data) {
      alert(data);
    },
    error: function() {
      alert("Error")
    }
  });
});
<link href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<button class="btn btn-default btn-lg btn-block" id="test">
    <span class="glyphicon glyphicon-time"></span>
    Test
</button>

(AJAX调用中的loc字段将定义我的控制器。)

当我在本地运行此代码时,我的AJAX调用将返回错误部分。

我应该改变什么?我有办法检测到为什么发生这种情况吗?

1 个答案:

答案 0 :(得分:1)

您的请求问题

  • 数据格式不正确" "hello": 0, "zulu": 1,234, "Bravo": 987.456 " => "hello": "0", "zulu": "1,234", "Bravo": "987.456" "

  • 未定义dataType

    contentType:“ application / json; charset = utf-8”,       dataType:“ json”,

  • 操作未返回JSON格式。

控制器动作

somePara = "111"

AJAX

JSON.stringify({ somePara: "111" }),

更新:操作应更改为 [HttpPost] public JsonResult MyMethod(int somePara) { return Json("it worked", JsonRequestBehavior.AllowGet); } ,以防止 $("button#test").on("click", function () { $.ajax({ type: "POST", url: "/Home/MyMethod", // i try home controller data: JSON.stringify({ somePara: "111" }), contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { alert(data); }, error: function () { alert("Error") } }); }); 无法转换为整数。