Reputation: 59
I have a simple form, do jquery form validation after submit, then Ajax call to form handler to send email, handler return string "success" or "error". Now when I run debugger, I saw Ajax post to the form handler, and sent out email successfully, but somehow Ajax displayed "status: error,error: Not Found"
Here's my code:
<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>
Inside form handler Java:
...
@RequestMapping(value = "/myFormHandler")
public String myFormHandler(HttpServletRequest request, HttpServletResponse response) {
...
if (email sent)
return "success"
else
return "error"
}
<form id="myForm" method="post" action="/mydomain/dispatcher/myFormHandler">
<p>Name (required): <input type=text name="contactName" class="required" size=16 value="">
<p>Email (required): <input type=text name='contactEmail' class="required" size=16 value=""></p>
<p><input type="submit" name="submit" value="Send">
</form>
Upvotes: 0
Views: 1938
Reputation: 5469
I am not a java expert, but seems the response from the servlet is sent incorrectly, It should be something like
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());
}
EDIT
if html response is the intent, something simple like this should work
public void myFormHandler(HttpServletRequest request, HttpServletResponse response) {
if (email sent)
response.getWriter().write("success");
else
response.getWriter().write("error");
}
hope this helps
Upvotes: 1
Reputation: 8168
May be you are including the relative
path of the file in your AJAX
request. May be the URL is imcomplete,Thats one of the reasons this error
may come.
Since the AJAX
request is initiating from the browser, its not relative to any file in the server.
NOTE:
If you are giving relative path like
somedir/filename in your `url` request make sure you do not prepend it with `'/'` like
/somedir/filename
EDIT: I am not sure what you mean by full url,but if you type the url in the browser, it should be able to give you the response
Upvotes: 0