Javascript JSON AJAX Post 403禁止错误
嗨,我刚开始学习Spring、AJAX和JSON。当我试图发回邮件时,我遇到了一个错误 messages.jspJavascript JSON AJAX Post 403禁止错误,javascript,jquery,json,ajax,spring,Javascript,Jquery,Json,Ajax,Spring,嗨,我刚开始学习Spring、AJAX和JSON。当我试图发回邮件时,我遇到了一个错误 messages.jsp function success(data) { $("#form" + data.target).toggle(); $("#alert" + data.target).text("Message sent.") startTimer(); } function error(data) { alert("Error sending message
function success(data) {
$("#form" + data.target).toggle();
$("#alert" + data.target).text("Message sent.")
startTimer();
}
function error(data) {
alert("Error sending message");
}
function sendMessage(i, name, email){
var text = $("#textbox" + i).val();
$.ajax({
type: "POST",
url: '<c:url value="/sendmessage" />',
data: JSON.stringify({"target": i, "text": text, "name": name, "email": email}),
success: success,
error: error,
contentType: "application/json",
dataType: "json"
});
}
function showMessages(data){
$("div#messages").html("");
for(var i=0; i<data.messages.length; i++) {
var message = data.messages[i];
var messageDiv = document.createElement("div");
messageDiv.setAttribute("class", "message");
var subjectSpan = document.createElement("span");
subjectSpan.setAttribute("class", "subject");
subjectSpan.appendChild(document.createTextNode(message.subject));
var contentSpan = document.createElement("span");
contentSpan.setAttribute("class", "contentText");
contentSpan.appendChild(document.createTextNode(message.content));
var nameSpan = document.createElement("span");
nameSpan.setAttribute("class", "nameSpan");
nameSpan.appendChild(document.createTextNode("From: "+ message.name + '('));
var link = document.createElement("a");
link.setAttribute("class", "replylink");
link.setAttribute("href", "#");
link.setAttribute("onClick", "showReply(" + i + ")");
link.appendChild(document.createTextNode(message.email));
nameSpan.appendChild(link);
nameSpan.appendChild(document.createTextNode(")"));
var alertSpan = document.createElement("span");
alertSpan.setAttribute("class", "alert");
alertSpan.setAttribute("id", "alert" + i);
var replyForm = document.createElement("form");
replyForm.setAttribute("class", "replyForm");
replyForm.setAttribute("id", "form" + i);
var textarea = document.createElement("textarea");
textarea.setAttribute("class", "replyArea");
textarea.setAttribute("id", "textbox" + i);
var replyButton = document.createElement("input");
replyButton.setAttribute("class", "replyButton");
replyButton.setAttribute("type", "button");
replyButton.setAttribute("value", "reply");
replyButton.onclick = function(j, name, email) {
return function() {
sendMessage(j, name, email);
}
}(i, message.name, message.email);
replyForm.appendChild(textarea);
replyForm.appendChild(replyButton);
messageDiv.appendChild(subjectSpan);
messageDiv.appendChild(contentSpan);
messageDiv.appendChild(nameSpan);
messageDiv.appendChild(alertSpan);
messageDiv.appendChild(replyForm);
$("div#messages").append(messageDiv);
}
}
功能成功(数据){
$(“#form”+data.target).toggle();
$(“#警报”+data.target)。文本(“已发送消息”)
startTimer();
}
函数错误(数据){
警报(“发送消息时出错”);
}
函数sendMessage(i、名称、电子邮件){
var text=$(“#textbox”+i).val();
$.ajax({
类型:“POST”,
url:“”,
数据:JSON.stringify({“target”:i,“text”:text,“name”:name,“email”:email}),
成功:成功,
错误:错误,
contentType:“应用程序/json”,
数据类型:“json”
});
}
功能显示消息(数据){
$(“div#messages”).html(“”);
对于(var i=0;i我也遇到了同样的问题,您需要将CSRF头添加到AJAX POST请求中。请看。我目前不在开发系统中,因此无法发布示例,但使用此页面中的信息对我很有效。第1步:
在表单中输入一个id--->
步骤2:
将表单作为序列化表单传递--->
$.ajax({
类型:“POST”,
url:“”,
数据:('#formid')。序列化(),
成功:成功,
错误:错误,
contentType:“应用程序/json”,
数据类型:“json”
});
您的安全配置如何?我已将安全设置为isAuthenticated,如下所示:您是否在发送请求之前登录了应用程序?如果您有安全问题,可以通过设置permitAll进行一次检查。如果设置permitAll有效,则意味着您有安全问题。是的,我已登录在我不断收到错误消息的过程中,我不断收到此错误-帖子403(禁止)谢谢你,我从昨天开始一直在努力解决此问题,终于成功了。@JJ9999你能分享克里夫建议的最终解决方案吗?我也遇到了同样的问题,因为我是JS和AJAX新手,所以我很难解决这个问题
@RequestMapping(value="/sendmessage", method=RequestMethod.POST, produces="application/json")
@ResponseBody
public Map<String, Object> sendMessages(Principal principal, @RequestBody Map<String, Object> data){
String text = (String)data.get("text");
String name = (String)data.get("name");
String email = (String)data.get("email");
Integer target = (Integer)data.get("target");
System.out.println(name + " , " + email + " , " + text);
Map<String, Object> returnVal = new HashMap<String, Object>();
returnVal.put("success", true);
returnVal.put("target", target);
return returnVal;
}
<form id='formid' ....>
$.ajax({
type: "POST",
url: '<c:url value="/sendmessage" />',
data: ('#formid').serialize(),
success: success,
error: error,
contentType: "application/json",
dataType: "json"
});