• 一次webapi Post请求失败记录


    //点击添加按钮
    $("#add").click(function () {
    //layer.msg("添加");
    var data = { "stuAge": 20, "stuClass": 2, "stuName": "诸葛大力", "stuStatus": 1 };
    alert(data);
    $.ajax({
    url: '/api/LayuiApi/AddStudent',
    contentType: 'application/json',
    type: 'post',
    data: JSON.stringify(data),
    success: function () {

    }
    });
    });

    后台接口:

    [HttpPost]
    public IActionResult AddStudent(Student stu)
    {
    try
    {
    _context.Student.Add(stu);
    _context.SaveChanges();
    return Ok(new { state = true, msg = "添加成功" });
    }
    catch(Exception ex)
    {
    return Ok(new { state = false, msg = ex.Message});
    }

    }

    最开始直接将var data = { "stuAge": 20, "stuClass": 2, "stuName": "诸葛大力", "stuStatus": 1 };作为数据传到后台 无论怎样更改访问都失败,

    最终发现需要将data改为 JSON.stringify(data),  问题解决。。。但是花了好久才发现

    在更新一点:

    当我在分装了方法 打算直接传入实体 以后直接调用时,方法如下:

    function Save(model) {
    $.ajax({
    url: addurl,
    contentType: 'application/json',
    type: 'post',
    data: JSON.stringify(model),
    success: function (res) {
    if (res.state == true) {
    var obj = { stuName: $("#stuName").val(), stuAge: $("#stuAge").val(), stuClassId: $("#stuClassName").val() };
    ReloadTable("demo", tableurl, obj);
    layer.closeAll();
    layer.msg("添加成功", { icon: 1 });
    }
    else {
    layer.msg("添加失败,请联系管理员!", { icon: 2 });
    console.log(res.msg);
    }
    }
    });
    }

    在调用时我一开始是这么传值的:

    $("#add").click(function () {
    InitAddForm();
    layer.open({
    type: 1,
    area: ['860px', '360px'],
    content: $('#AddDiv'),
    btn: ['保存', '取消'],
    yes: function (index, layero) {
    var stuName = $("#AddDiv input[name='stuName']").val();
    var stuage = $("#AddDiv input[name='stuAge']").val();
    var stuClass = $("#shId").val();
    if (CheckAddForm(stuName, stuage, stuClass)) {
    var data = { "stuAge": parseInt(stuage), "stuClass": parseInt(stuClass), "stuName": stuName, "stuStatus": 1 };
    Save(data);
    } else {
    return false;
    }
    }
    });
    })

    我一开始并没有加parseint  

     var data = { "stuAge": parseInt(stuage), "stuClass": parseInt(stuClass), "stuName": stuName, "stuStatus": 1 };

    以至于后来调试前台js才发现栓来的age等都是字符串  所以和后台的模型类定义的int类型不符合 怎么传都是400 || 405

    个人觉得这个点也很值得注意

    postman测试结果如下图:

    1.当我把age加上双引号变为字符串时:

     返回为400

    当我把age改回int

    今天又犯了一个错 在core 的webapi中

     忘记指定给路由配置action  导致半天文件上传访问接口一直失败 。。。。。痛定思痛  以后绝对不再犯了  路由配置!!!

  • 相关阅读:
    变Enter键为Tab键 实现焦点转移
    .net事务使用实例
    C#多线程编程(1):线程的启动
    Sql中try{} catch{}实例
    winform刷新父窗体
    Sql批量删除/插入
    IDENTITY,SCOPE_IDENTITY和IDENT_CURRENT的辨析
    C#多线程编程(2):线程的同步
    Sql Server 网络备份
    SQL语句来获取一个表的所有列的信息,如,列名、类型、长度等
  • 原文地址:https://www.cnblogs.com/yagamilight/p/12192157.html
Copyright © 2020-2023  润新知