【发布时间】:2016-02-06 13:11:58
【问题描述】:
我想将操作的validate() 方法的结果作为(JSON?)数据发送到客户端的 ajax 调用,以便通知用户。
我通过 ajax 在客户端发送表单数据。在服务器端,我正在实现一个简单的validate() 方法(我还没有准备好验证框架)。这是我的ajax调用
function save_new_user() {
var user =
{ username: $('#new_user_username').val(),
email: $('#new_user_email').val(),
password: $('#new_user_password').val()
};
data = {'user':user};
datastr = JSON.stringify(data);
$.ajax({
type : 'POST',
url : 'SaveNewUser',
data: datastr,
dataType : 'json',
contentType: 'application/json',
success : function(data, textStatus, jqXHR) {
if(data) {
}
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(errorThrown);
}
});
}
在我的 Struts2 Action 中,我有
public void validate() {
if(user.getUsername().length() < 6){
addFieldError("user", "username must be at least 6 charachers long");
}
if(user.getPassword().length() < 8){
addFieldError("user", "password must be at least 8 charachers long");
}
}
/* Execute */
public String execute() throws Exception {
dbServices.saveUser(user);
return "SUCCESS";
}
我有一个默认堆栈应用于此操作调用
<package name="json-data" extends="json-default">
<interceptors>
<interceptor-stack name="jsonDataStack">
<interceptor-ref name="json"/>
<interceptor-ref name="basicStack"/>
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel</param>
</interceptor-ref>
<interceptor-ref name="jsonValidation"/>
<interceptor-ref name="workflow"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="jsonDataStack"/>
</package>
并且正在调用validate() 方法。
所以,我的问题又来了:如何将validate() 函数的结果作为数据发送到ajax 调用,以便我可以使用它来通知用户?似乎addFieldError() 方法没有以 JSON 可读形式配置数据,因为 ajax 结果中的错误消息是
SyntaxError: Unexpected token <(…)
【问题讨论】:
-
感谢@Roman,我将在这里添加一个不同的答案,但这两个问题实际上非常相似
标签: jquery json ajax validation struts2