今天遇见一个ajax请求的问题,以前data直接传了一个json字符串,后来适应新需求将ajax的请求参数修改为对象的格式让ajax自动转换为json字符串。以下是两种ajax请求代码。
//字符串格式 $.ajax({ url:"http://127.0.0.1/test", type:"post", dataType:"JSON", data:"{‘param‘:‘test‘}", processData :false, }); //对象格式 $.ajax({ url:"http://127.0.0.1/test", type:"post", dataType:"JSON", data:{ param:‘test‘ }, processData :false, });
之前字符串格式的方式功能是能调通的,但是改成对象方式功能就调不通了,后台断点发现获取不到param参数。通过Chrome调试发现这个ajax请求的FormData是一个"[Object object]"字符串,并不是预期的json字符串。其他使用对象方式也没有出过问题,后来搜索了下ajax请求参数的含义,发现是因为processData这个配置的原因,processData的作用是:指定ajax是否将data中的数据进行转化,默认是true,即默认会将data中的数据转化成json字符串,false时,直接将data传输到后台。
之前的ajax请求不是我写的,所有不懂processData的含义,去掉processData或者修改为true,就可以转化了。
时间: 2024-10-22 06:43:36