Reputation: 1541
I'm having problems executing the call back function.
$.post("/" + contentId + "/postComment", {
"postComment": ""
}, function(data) {
alert('call back');
});
This post does take place. The alert is not called, however.
This post results in some xml
returned. I can't tell exactly how it looks because I'm using Spring mappings of application/xml
together with @RequestBody
and I just don't know what Spring does to what I'm returning. I'm saying this just in case the contents of server response can affect the call back somehow.
The question is:
Upvotes: 8
Views: 11268
Reputation: 466
For readability, I would recommend to ignore the above correct answer. As of JQuery 1.5 (or later, and in the questions case) use:
$.post("/" + contentId + "/postComment", {
"postComment": ""
}).always(function() {
alert('call back');
});
as stated in the JQuery documentation: https://api.jquery.com/jquery.post/
It's not very clear from the documentation but you get the returned "jqXHR" object from the post request as parameter to the always, fail, and done functions.
You can extend the parameters, as you need, up to:
.always(function(responseArray, request, jqxhr, status, error) {
alert( jqxhr.responseText );
});
Upvotes: 2
Reputation: 3325
Had a similar issue where the callback doesn't fire when you provide a string as data and the server returns a JSON response. To get around this, simply explicitly specify the datatype to be JSON:
function update_qty(variant_id, qty){
$.post('/cart/update.js', "updates["+variant_id+"]="+qty, function(data){
updateCartDesc(data);
}, "json");
}
Upvotes: 6
Reputation: 8200
I noticed that the ajax script needs to have a content-type of application/json
rather than application/javascript
, if it is indeed JSON.
Upvotes: 0
Reputation: 1074178
Your code is fine other than that it doesn't hook the error handler (one of the reasons I don't like $.post
). I think the POST operation must be resulting in an error. Try converting it to this:
$.ajax({
type: "POST",
url: "/"+contentId+"/postComment",
data: {"postComment":""},
success: function(data) {
alert('call back');
},
// vvv---- This is the new bit
error: function(jqXHR, textStatus, errorThrown) {
alert("Error, status = " + textStatus + ", " +
"error thrown: " + errorThrown
);
}
});
...so you can see what the error is.
Upvotes: 27