I’m wondering what is the best method to handle AJAX calls with jQuery? Right now I’m doing something like following:
$("#test").live('click', function(){
// Process form
$.ajax({
type: "post",
url: "test.php",
success: function(html){
if(html.success == 0) {
alert('Error');
} else {
var obj = $.parseJSON(html.rows);
$("#success").html(obj[0].name);
}
},
dataType:'json'
});
return false;
});
In test.php file, I’m checking if request is an AJAX request. If it’s an AJAX request I’m running a database query to get some data (this part isn’t important in this question, I think):
// query goes here
if(mysql_num_rows($query) > 0 ) {
$result['success'] = 1;
$result['data'] = json_encode($data);
} else {
$result['success'] = 0;
}
Now I’m wondering if my method is the best possible? FYI I’m using KohanaPHP framework currently, so I want to not break MVC “rules”. If I’m doing it wrong, do you have any tips and suggestions how to handle AJAX calls in controllers?
Regards,
Tom
What you have looks good here, though I don’t think you need a
$.parseJSON()there, it should already be an object at that point, this should work:As a side note, from a readability/maintainability perspective, I’d rename your
htmlargument to bedata, like this:This is purely preference, but using
htmlwhen it’s an HTML type response, anddataor something else when it’s JSON/already an object you’re expecting keeps things a bit easier to read for outsiders.