post请求,提示400,怎么破?

我写了个修改值的页面,每次到调试那,就直接绕过ajax,进入到行尾了,不进ajax,也不知道接口是对是错?

$.ajax({
                type: "post",
                url: "rls.php",
                data: {
                    "Id" : "${roleId}",
                    "Name" : roleName,
                    "Code" : roleCode
                },
                dataType: 'json',
                contentType: 'application/json;charset=utf-8',
                success: function(data) {
                    console.log("success");
                },
                error: function(data) {
                    if (data.status == '200') {
                        alert('修改成功');
                },
            });

不进这里来,是什么原因
错误代码提示:

Unrecognized token 'Id': was expecting ('true', 'false' or 'null')
 at [Source: org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream@9e3d60d; line: 1, column: 19]
阅读 12.5k
4 个回答

从报错信息上看,我传的ID是布尔值,可是我的ID是字符串,怎么会是布尔值,跟做接口的哥们了解后,我的ID是布尔值,但是必须要转换成字符串才可以,所以下面的代码就转换了:然后就OK了

果然,自己挖坑,自己跳,再自己爬出来

data = JSON.stringify(data);

先确定触发事件时候是否正确调用了$.ajax,如果调用正确了,那么报404的话,确定请求的URL路径是否写对,提问不详,无法确定代码的问题在哪儿,仅供参考。

400是请求格式不正确的意思。
你可以测试一下:

data: {
    "Id" : true,
    "Name" : roleName,
    "Code" : roleCode
},

或者

data: {
    "Id" : 'true',
    "Name" : roleName,
    "Code" : roleCode
},

如果没有400错误就是格式的问题了。

绕过ajax没有进入一定是你没在里面设置断点,因为里面看上去的函数,其实只是ajax这个函数的参数。就像fun(a,b,c,d),只是一个函数调用写了很长,但是可以说只有一行,所以你如果是逐行调试的话就会一下子直接跳过,而如果进入函数,那就会跳到ajax的实现方法,所以调试时建议在回调函数里设置断点。


当然,如果是404那就很有可能你把url写错了。检查下你的路径。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题