成功调用时Ajax返回错误

时间:2015-05-28 14:38:34

标签: jquery ajax

我有一个简单的表单,提交后做jquery表单验证,然后Ajax调用表单处理程序发送邮件,处理程序返回字符串“成功”或“错误”。现在,当我运行调试器时,我看到Ajax发布到表单处理程序,并成功发送了电子邮件,但不知何故Ajax显示“状态:错误,错误:未找到”

这是我的代码:

Test1
Test2
Test3
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = CStr(Range("A2"))
<script>
$(document).ready(function(){
    $("#myForm").submit(function(event) { 
        event.preventDefault();
            
        $('#myForm .required').each(function() {
            if($.trim($(this).val()) === '') {
                alert("Please fill the required field.");
                $(this).focus();
                return false;
            } 
        }); 
        
        $.ajax({
            type : "POST",
            url : "/mydomain/dispatcher/myFormHandler",
            data : $("#myForm").serialize(),
            dataType : "html",  
            success : function(data)  { console.log("Ajax call success");},
            error : function(request, status, error) { console.log ('status: ' + status+ ',error: ' + error);}
        });

        return false;
    });  
});
</script>

2 个答案:

答案 0 :(得分:1)

我不是java专家,但似乎来自servlet的响应发送错误,应该是

public void myFormHandler(HttpServletRequest request, HttpServletResponse response) {
    JSONObject json = new JSONObject();
    if (email sent)
        json.put("success", true);
    else
        json.put("success", false);    
    response.setContentType("application/json");
    response.getWriter().write(json.toString());
}

修改

如果html响应是意图,那么像这样的简单应该可以工作

public void myFormHandler(HttpServletRequest request, HttpServletResponse response) {
    if (email sent)
        response.getWriter().write("success"); 
    else
        response.getWriter().write("error");     
}

希望这会有所帮助

答案 1 :(得分:0)

您可能在relative请求中包含该文件的AJAX路径。可能是网址不完整,这就是error可能出现的原因之一。

由于AJAX请求是从浏览器启动的,因此它与服务器中的任何文件都不相关。

注意:

如果你给的是相对路径

somedir/filename in your `url` request make sure you do not prepend it with `'/'` like

/somedir/filename

编辑:我不确定您的完整网址是什么意思,但如果您在浏览器中输入网址,它应该能够给您回复