ajax 调用 .net core WebAPI,报错 400 (Bad Request) Unexpected character encountered while parsing value

此文由博主前两天的提问及 dudu 的回答整理,地址:https://q.cnblogs.com/list/myquestion

情况说明

基于 .net core 写了一个 Web API,用 postman 测试时,能够 POST 返回数据,但是用 ajax 调用 API 时就会报错(400)。

前端 ajax 调用报错

postman 调用正常

服务端相关代码

[HttpPost]
    public async Task<ActionResult<List<Flow>>> PostFlow([FromBody] PostParams data)  // dynamic
    {
        return await _context.Set<Flow>().Where(s => data.Czid.Contains(s.Czid) && s.Rq >= data.Begin && s.Rq <= data.End).ToListAsync();
    }

    public class PostParams
    {
        public DateTime Begin { get; set; }
        public DateTime End { get; set; }
        public int[] Czid { get; set; }
    }

前端ajax

$.ajax({
    type: "POST",
    url: "http://localhost/rfapi/api/flow",
    data: {"czid": ["1"], "begin": "2017-03-30 00:00:00", "end": "2017-03-31 00:00:00"},
    contentType: "application/json",
    async: true,
    dataType: "json",
    success: function(data) {
        console.log(data.length);
    },
    error: function(err) {
        console.log(err);
    }
});

关于此 Web API 的搭建过程,可参考 .net core WebAPI 初探及连接MySQL

解决方法

要用 JSON.stringify 将 js 对象转换为 json 字符串

data: JSON.stringify({"czid": ["1"], "begin": "2017-03-30 00:00:00", "end": "2017-03-31 00:00:00"})

感谢 dudu 的解惑。

原文地址:https://www.cnblogs.com/xunzhiyou/p/10727279.html

时间: 2024-11-06 03:50:53

ajax 调用 .net core WebAPI,报错 400 (Bad Request) Unexpected character encountered while parsing value的相关文章

oc调用c++接口时 报错 Undefined symbols for architecture i386:

当在oc中调用c++中的方法时,发现说c++中的方法没定义或是找不到 Undefined symbols for architecture i386: "_desTYData", referenced from:-[TuYoo encryptParametersWithDict:] in libtuyoo.a(TuYoo.o)ld: symbol(s) not found fo 记得c++中的方法定义是要这样定义的 extern"C" { const char *d

c# 传递Null的string值导致的调用C++的dll报错 Attempted to read or write protected memory.

c# 调用C++的dll报错 Attempted to read or write protected memory:   原因是:c# 传递Null的string值导致的,将Null改为string.empty即可

nginx反向代理报错400

当用nginx做负载均衡的时候,nginx的配置文件如下: upstream server_pools { server 10.0.0.7:80 weight=1; server 10.0.0.8:80 weight=1; 当客户端访问时出现报错如下: [[email protected] ~]# curl www.hahaetiantian.org <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html>

matplotlib.pyplot import报错: ValueError: _getfullpathname: embedded null character in path

Environment: Windows 10, Anaconda 3.6 matplotlib 2.0 import matplotlib.pyplot 报错: ValueError: _getfullpathname: embedded null character in path 原因以及Solution: http://stackoverflow.com/questions/34004063/error-on-import-matplotlib-pyplot-on-anaconda3-f

关于报错“syntax error near unexpected token `”和回车换行

本来是很简单一个事情,转过来是因为打字机这事比较有趣-- http://blog.csdn.net/xyp84/archive/2009/08/11/4435899.aspx 摘要一下: 回车 换行 0D 0A <CR> <LF> Carriage Return Line Feed "/r" "/n" win32 0D 0D 0A unix 0D 0A ============淡定的分割线=============== 今天写了个shell脚

(SpringMVC)报错:The request sent by the client was syntactically incorrect ()

springMVC数据绑定,对我们而言,能够更轻松的获取页面的数据,但是必须要注意的一点就是: Controller方法中的参数名和jsp页面里的参数名字是否一致或者按照绑定的规范来写 在Controller中@RequestParam("m_level") Integer m_level 那么在jsp页面上的数据 <select name="m_level"> <option value="一级">一级</opti

https网站访问第三方https网站时候报错: The request was aborted:Could not create SSL/TLS secure channel.

https网站访问第三方https网站时候报错: The request was aborted:Could not create SSL/TLS secure channel. 解决办法: if(Url.StartsWith("https",StringComparison.OrdinalIgnoreCase))//https请求 { ServicePointManager.Expect100Continue = true; //如果是4.5以上版本可以直接使用 //ServiceP

AngularJS 2调用.net core WebAPI的几个坑

前几天,按照AngularJS2的英雄指南教程走了一遍,教程网址是http://origin.angular.live/docs/ts/latest/tutorial/. 在步骤完成后,又更进一步,在英雄增删改的时候,直接调用.net core的WebApi来实现后台数据的操作,替换教程中的模拟WebApi方式.在替换.net core WebApi时,还是遇到了一些坑的,这里记录一下. 先来看一下WebApi和AngularJS的源代码: WebApi 1 [Route("api/[contr

$.ajax访问RESTful Web Service报错:Unsupported Media Type

最近在项目中,前台页面使用jquery ajax访问后台CXF发布的rest服务,结果遇到了错误"Unsupported Media Type". 发布的服务java代码如下: import javax.jws.WebService; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produ