You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过AJAX向WebService传递JSON数组报500错误(缺少totalKilos参数)求助

问题根因

服务端返回的报错已经明确指向问题核心:调用ASMX WebService接口时缺少必填参数totalKilos。你当前提交的JSON结构仅包含lista字段,和服务端insertarSolicitudVenta接口定义的入参列表不匹配,因此触发500错误。

解决方案

1. 核对服务端入参定义

先确认后台insertarSolicitudVenta方法的参数规则,常规情况下该接口的参数列表会包含两个字段:

  • 对象数组类型的lista(和你当前提交的字段对应)
  • 数值类型的totalKilos(你当前缺失的必填字段)
    注意参数名大小写必须和后台定义完全一致,ASMX反序列化对大小写敏感

2. 修正提交的JSON结构

补全totalKilos字段,值为所有lista数组中CantidadKilos的总和,数值类型不要加引号避免反序列化失败,示例结构:

{
    "lista": [
        {
            "idSolVenta": "1",
            "rutEmpresa": "123456789",
            "idDetalleSolicitud": "1",
            "idCategoria": "3",
            "idSubcategoria": "8",
            "CantidadKilos": 123456
        },
        {
            "idSolVenta": "1",
            "rutEmpresa": "123456789",
            "idDetalleSolicitud": "1",
            "idCategoria": "3",
            "idSubcategoria": "8",
            "CantidadKilos": 123456
        }
    ],
    "totalKilos": 246912
}

3. 修正AJAX请求代码

删除冗余且错误的beforeSend配置(其中application/j-son为错误的MIME类型,且你已经在contentType中声明了正确的JSON类型),同时确保提交的data是JSON字符串而非JS对象:

// 构造提交数据的示例代码
const sumKilos = lista.reduce((total, item) => total + Number(item.CantidadKilos), 0);
const submitData = {
    lista: lista,
    totalKilos: sumKilos
};
const salida = JSON.stringify(submitData);

// 修正后的AJAX请求
$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: "http://localhost:63160/WebServiceDetalleSolicitudVenta.asmx/insertarSolicitudVenta",
    data: salida,
    dataType: "json",
    success: function () {
        alert("SUCCESS!");
    },
    error: function (msg, source, lineNo, columnNo, error) {
        alert("Error: " + msg +
            "\nScript: " + source +
            "\nLine: " + lineNo +
            "\nColumn: " + columnNo +
            "\nStackTrace: " + error);
    }
});

额外排查点

如果修改后仍然报错,可检查:

  • 服务端是否开启了POST请求权限,ASMX默认仅支持SOAP协议调用,需要在web.config中配置<webServices><protocols><add name="HttpPost"/></protocols></webServices>才支持JSON POST请求
  • 若前端和服务端域名、端口不一致,需要单独配置ASMX的跨域规则

内容的提问来源于stack exchange,提问作者LightningVolt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 19:06:03