【问题标题】:Can't get ajax call with parameters to hit my C# function无法使用带参数的 ajax 调用来访问我的 C# 函数
【发布时间】:2018-10-13 20:35:05
【问题描述】:

阿贾克斯:

var test = "test";

$.ajax(
{
  type: "POST",
  url: "project/function",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  data: { input: test },
  success: function (response) {
    $("#lblMsg").text(response.d);
  },
  failure: function (response) {
    alert(response.d);
  }
});

C#函数:

[WebMethod]
public void function(string input)
{
}

当我不包含参数时,连接成功。我尝试了 ajax 调用的“数据”部分的不同单引号和双引号排列,但无济于事。

我也尝试将 dataType 设置为“text”,结果相似。

我错过了什么?

【问题讨论】:

  • 你能从 Postman 那里得到它吗?请在 Chrome 中加载开发者工具(网络选项卡)并向我们展示正在发出的请求(包括正在发送的 URL 和有效负载)。
  • 我是 ajax 和 jquery 新手,所以还不熟悉最佳实践。
  • 你试过 json.stringify 吗?数据:JSON.stringify({输入:测试}),
  • 您从哪个页面发送请求?
  • @ChasetopherB我忘了补充,你知道在jquery ajax中没有“失败”这样的功能吗?在出现问题时指定回调的正确选项是“错误”。目前,当方法失败时,您的代码将什么也不做。此外,“错误”回调在响应中不包含名为 d 的属性,而是您将获得一个 XHR 对象 - 它的内容在文档中进行了解释。我在这里经常看到这个错误,也许网上有一些垃圾教程在使用它。您可以在此处检查所有有效选项等:api.jquery.com/jquery.ajax

标签: c# jquery asp.net ajax webmethod


【解决方案1】:

我建议您不要将数据作为 JSON 发送。只需删除

contentType: "application/json; charset=utf-8"

jQuery 会将数据序列化为普通的 url 编码的表单数据格式,这正是 WebMethod 所期望的。

【讨论】:

    【解决方案2】:

    试试这个可能会解决你的问题

    var test = "测试";

    $(document).ready(function () {
       $.ajax({
              type: "POST",
              url: "project/function",
              contentType: "application/json; charset=utf-8",
              datatype: "json",
              data:JSON.stringify({ 'input': test }),
              success: function (response) {
             $("#lblMsg").text(response.d);
      },
      failure: function (response) {
        alert(response.d);
      }
      });
    });

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多