无法使用带参数的 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# 函数的主要内容,如果未能解决你的问题,请参考以下文章