这是我的 AJAX 调用:
var dataString = "{existingProject:'"+ $("#existingProject").val() + "',newProjName:'" + $("#newProjName").val()+"'}";
$.ajax({
type: "POST",
url: "manageProjects.html",
data: dataString,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
alert(msg.status + " " + msg.responseText);
$("#grid").trigger("reloadGrid");
},
error: function (errormessage) {
alert(errormessage.status + " " + errormessage.responseText);
}
});
..这是我希望处理请求的 Spring MVC Controller 中的方法签名:
@RequestMapping(value="/manageProjects",produces="application/json",method=RequestMethod.POST)
public StatusResponse manageProjects(
@RequestParam("existingProject") String existingProj,
@RequestParam("newProjName") String newProj,
HttpSession session){
我一整天都在修改这个 ajax 调用,但我只是没有看到这个问题。我尝试过将 load 与数据参数 post 一起使用,并且我尝试过不设置 contentType 和 dataType 并使用它。
错误消息中的responseText告诉我该调用在语法上不正确......但不知道为什么......
我错过了一些愚蠢的事情。感谢您的任何见解...
最佳答案
我也遇到了同样的问题。我在firefox中使用tamper data插件来检查jquery发送的数据。有效负载为:
POSTDATA=message=test+message
我在 JQuery 请求上应用了 JayC 给出的修改,并且它有效。详情:
JayC给出的修改:
var dataString = JSON.stringify({
existingProject: $("#existingProject").val(),
newProjName: $("#newProjName").val()
});
我的要求:
function post(dest) { var dataString = JSON.stringify({ message: 'test message'}); jQuery.ajax({ type: "POST", url: ndest, crossDomain: true, contentType: "application/json; charset=utf-8", dataType: "json", data: dataString, success: function (data, status, jqXHR) { }, error: function (response, textStatus, errorThrown) { handleError(response, textStatus, errorThrown); } }); };
处理请求的 Spring mvc Controller 部分:
@RequestMapping(value="myapp/{id}", method={RequestMethod.POST, RequestMethod.PUT})
@ResponseStatus(HttpStatus.CREATED)
public void setNote(@PathVariable("id") String user, @RequestBody MyModel content) {
现在有效负载是:
POSTDATA={"message":"test message"}
一些提示:
- 使用篡改数据或任何其他嗅探器检查请求的负载
- 我发现您的方法参数中没有@RequestBody。也许你的 json 无法解析,因为你什么也没要求。尝试添加
@RequestBody MyClass内容
。 MyClass 应该有正确对应的 getter 和 setter 以及一个空的构造函数。
关于jquery - AJAX 请求格式错误?问题出在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9810564/