Javascript springMVC中的Ajax调用总是返回错误
Ajax调用:Javascript springMVC中的Ajax调用总是返回错误,javascript,jquery,ajax,spring-mvc,Javascript,Jquery,Ajax,Spring Mvc,Ajax调用: $.ajax({ type:'post', url:'https://hybris.local:9002/store/verify?productCodePost='+productid, data : {notifyemail : notifyemail}, dataType : "text", success : successmethod, error : function(data,
$.ajax({
type:'post',
url:'https://hybris.local:9002/store/verify?productCodePost='+productid,
data : {notifyemail : notifyemail},
dataType : "text",
success : successmethod,
error : function(data, status) {
//alert("Error "+status);
$('#showbecomepartnerMessage').show();
}
});
alert("test values are"+notifyemail);
document.getElementById('notifyemail').value='';
}
function successmethod(data) {
if (data != null) {
alert('Success');
$('#showemailMessage').show();
} else {
alert('Error');
}
}
控制器:
@RequestMapping(value = "/verify", method = RequestMethod.POST, produces = "application/json")
public String verifyEmail(@RequestParam("productCodePost") final String code, final Model model,
@Valid final AddToCartForm form)
{
System.out.println("Inside Verify method");
final String email = form.getNotifyemail();
System.out.println("Email is " + email);
System.out.println("Product code is== " + code);
final Boolean status = true;
if (email != null)
{
System.out.println("Email id is" + email);
notifyStockEmail(email, code);
}
if (status.booleanValue())
{
System.out.println("value of Boolean " + status.booleanValue());
//return "success";
model.addAttribute("success", "success");
}
else
{
//return "fail";
model.addAttribute("error", "error");
}
return "success";
}
在上面的代码中,我正在执行一个ajax调用并调用一个控制器'/verify',从控制器返回一个布尔值作为true,但每次错误方法都是在jsp中执行的,而不是success方法。那么,我如何通过如上所述从控制器传递true值来调用success方法呢?如果有任何帮助,我们将不胜感激。尽管您的断言时,您不会返回布尔值。您正在将一些名为“success”和“error”的字符串属性放入模型中,并转发到名为success的视图,该视图可能不存在,也可能不存在 如果您只是想将布尔值true | false写入响应流,那么您可以按如下操作 添加@ResponseBody注释:
@RequestMapping(value = "/verify", method = RequestMethod.POST, produces = "application/json")
public @ResponseBody boolean verifyEmail(@RequestParam("productCodePost") final String code, final Model model,
@Valid final AddToCartForm form){
boolean status = false;
//check and set status.
return status;
}
见:
此注释可以放在方法上,并指示返回
类型应该直接写入HTTP响应主体,而不是
放置在模型中,或解释为视图名称
请试试这个:
@RequestMapping(value = "/verify", method = RequestMethod.POST)
public @ResponseBody String verifyEmail(@RequestParam("productCodePost") final String code) {
//do what you want and return your status
return "OK";
}
您的ajax调用应该类似于:
$.ajax({
type:'post',
url:'https://hybris.local:9002/store/verify?productCodePost='+productid
}).success(function(data) {
successmethod(data);
});
服务器返回的错误是什么?您是否使用spring security保护应用程序?@David Inside console中返回的值为true..但在ajax函数中,它正在调用错误方法…@melli-182否我没有使用spring security保护..@User2413 ok!我认为可能是数据类型不兼容,请尝试从调用中删除数据类型参数。您能否详细说明状态代码,因为它显示了初始化布尔变量的错误,…final boolean status=false;如果是电子邮件!=null{System.out.printlnEmail id为+email;notifyStockEmailemail,代码;}如果状态为{model.addAttributestatus,成功;}否则{//返回失败;model.addAttributestatus,错误;}返回状态;这是设置状态的正确方法吗@Alan HayHere如何将数据“data:{notifyemail:notifyemail}”发送给控制器??