无法使用带参数的 ajax 调用来访问我的 C# 函数

Posted

技术标签:

【中文标题】无法使用带参数的 ajax 调用来访问我的 C# 函数【英文标题】:Can't get ajax call with parameters to hit my C# function 【发布时间】: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 【参考方案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);
  
  );
);

【讨论】:

以上是关于无法使用带参数的 ajax 调用来访问我的 C# 函数的主要内容,如果未能解决你的问题,请参考以下文章

为啥不能将父ajax调用的参数访问到子ajax调用中

使用jQuery的ajax获取带参数的请求,返回页面内容

C#实现简易ajax调用后台方法

带参数的ajax调用函数/like和like文章

带参数的访问查询在 Access 中有效,在 C# 中无效

在C#中使用线程,线程的方法函数中需要带一个数组的参数传递进去