Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jqueryajax请求出现错误404(未找到),但可以正常工作_Javascript_Java_Jquery_Ajax_Spring - Fatal编程技术网

Javascript jqueryajax请求出现错误404(未找到),但可以正常工作

Javascript jqueryajax请求出现错误404(未找到),但可以正常工作,javascript,java,jquery,ajax,spring,Javascript,Java,Jquery,Ajax,Spring,我正在向服务器发送jqueryajax请求,但是浏览器的控制台告诉我找不到该页面。尽管如此,我的SpringMVC签名映射了请求的URL,但是AJAX函数的done部分没有执行 以下是相关代码: Javascript: var content = $(data).filter("#wrapper-email-content"); $.ajax({ url : '/sendEmail', type : 'POST', data : {

我正在向服务器发送jqueryajax请求,但是浏览器的控制台告诉我找不到该页面。尽管如此,我的SpringMVC签名映射了请求的URL,但是AJAX函数的
done
部分没有执行

以下是相关代码:

Javascript:

    var content = $(data).filter("#wrapper-email-content");
    $.ajax({
        url : '/sendEmail',
        type : 'POST',
        data : {
            content: content.html()
        }
    }).done(function(){
        console.log("Finished")
    });
Spring MVC签名:

@RequestMapping(value = "/sendEmail", method = RequestMethod.POST)
public void sendEmail(
    HttpServletRequest request, String content) {

    UserTO user = (UserTO) request.getSession().getAttribute("USER");
    String email = user.getEmail();
    String title = "Your order";
    Email.sendEmail(title, email, content, null, null, null);
}
因此,在代码中,电子邮件被发送,这意味着sendmail方法被执行,但我仍然得到错误404:在AJAX请求中找不到,并且控制台中没有打印“Finished”

我做错了什么?

@RequestMapping(value=“/sendmail”,headers=“Accept=application/json”,method=RequestMethod.POST)
@RequestMapping(value = "/sendEmail",headers="Accept=application/json", method = RequestMethod.POST)
public Map<String,String> sendEmail(
    HttpServletRequest request, @RequestBody String content) {
    Map<String,String> statusMap=new HashMap<String,String>();
    UserTO user = (UserTO) request.getSession().getAttribute("USER");
    String email = user.getEmail();
    String title = "Your order";
    Email.sendEmail(title, email, content, null, null, null);
    statusMap.put("status","Mail sent successfully");
    return statusMap;
}
公共地图发送电子邮件( HttpServletRequest请求,@RequestBody字符串内容){ Map statusMap=newhashmap(); UserTO user=(UserTO)request.getSession().getAttribute(“用户”); 字符串email=user.getEmail(); String title=“您的订单”; Email.sendmail(标题、电子邮件、内容、空、空、空); statusMap.put(“状态”,“邮件发送成功”); 返回状态图; }
编辑:参见发布的解决方案

不熟悉MVC Spring,但您可能需要自己返回一个成功状态代码:

public String sendEmail(
    HttpServletRequest request, @RequestBody String content) {

    UserTO user = (UserTO) request.getSession().getAttribute("USER");
    String email = user.getEmail();
    String title = "Your order";
    Email.sendEmail(title, email, content, null, null, null);
    return new ResponseEntity<String>(json,HttpStatus.OK);
}
公共字符串发送电子邮件(
HttpServletRequest请求,@RequestBody字符串内容){
UserTO user=(UserTO)request.getSession().getAttribute(“用户”);
字符串email=user.getEmail();
String title=“您的订单”;
Email.sendmail(标题、电子邮件、内容、空、空、空);
返回新的ResponseEntity(json,HttpStatus.OK);
}

更好的解决方案是用

@ResponseStatus(value = HttpStatus.OK)

有关示例,请参见答案

您确定这是一个404,并且它不仅仅是因为服务器没有返回任何内容而超时的请求?您的sendEmail方法返回什么\n该方法没有返回任何内容(无效),它只是请求服务器发送电子邮件,不需要返回任何内容。错误是:POST 404(未找到)然后试着在服务器上输出一些东西,ajax通常需要响应和关闭连接,然后成功处理程序才会启动。当我这样做时,我会收到一条错误消息,说@RequestBody无法解析为类型,即使我在添加@RequestBody时仍然会出错,这样的退货解决了我的问题。是否总是需要向AJAX请求返回某些内容?我不能只使用void方法吗?向@RequestMapping添加头它将解决您的问题是的,您是对的,这是一个更好的解决方案,可以满足我的需要,尽管其他方法也可以。