JavaScript fetch调用ASP.NET WebMethod传参失败提示无参数值是什么原因?
问题根因
- ASP.NET 框架中标记了
<WebMethod()>的静态接口,当收到Content-Type: application/json的POST请求时,只会从请求体的JSON结构中读取参数,完全忽略URL QueryString中的参数,你将aPrice放在URL中传递,后端自然无法识别,因此抛出No value for parameter 'aPrice'错误。 - 你当前的JS代码存在语法错误:headers配置项结束后缺少逗号分隔,会直接导致请求格式异常。
解决方案
将所有需要传递的参数统一放入POST请求体中,参数名需要和后端接口定义的参数名完全一致即可完成自动绑定。
修正后的JS请求示例:
// 构造请求参数,参数名要和后端接口参数aPrice完全对应 const postData = { aPrice: "111" // 如果有其他purchase中的参数,可在此处添加对应字段,后端接口同步加同名参数即可接收 }; fetch("PayOrder.aspx/CreateStripePaymentIntent", { method: "POST", headers: { 'Accept': 'application/json', "Content-Type": "application/json" }, body: JSON.stringify(postData) })
可选校验项
如果修改后仍有异常,可检查Web.config配置,确保开启了POST请求访问WebMethod的权限:
<system.web> <webServices> <protocols> <add name="HttpPost"/> </protocols> </webServices> </system.web>
内容的提问来源于stack exchange,提问作者Giorgio Forti
相关产品推荐
相关产品推荐

