I have an ajax get request as below. I am making a GET request to server.js in openshift using nodejs express. However, i get html contents in the response method instead of json object. Both the requests are for the same domain.The node modules that I am using are moongojs,mongodb and bson.
$.ajax({
type: "GET",
url: "http://abc-favspot.rhcloud.com",
contentType: "application/json",
data: JSON.stringify(currLocation),
dataType: "text",
success: function(response){
callback(response);
},
error: function( error ){
console.log( "ERROR:", error );
}
});
My server.js file has the following code
self.routes['getData'] = function(req, res){
console.log("gat method");
self.db.collection('location').find().toArray(function(err, names) {
res.header("Content-Type:","application/json");
console.log("success get");
res.send(names);
});
};
You can use
res.json
to send JSON response instead ofres.send
This method also set
Content-Type
asapplication/json
in your
$.ajax
method call change thisto
refer to the documentation for the further details
https://api.jquery.com/jQuery.ajax/
and please check if the data you receive is a valid json, check it with http://jsonlint.com/
res.send(names)
is not JSON, You have to stringify the data usingJSON.stringify
.Try testing before the DB call to check if it works.
res.send( JSON.stringify( {testData:'test'} ) )
Edit
As discussed in the comments, please check to ensure that your request is routed to the correct route that you declared.
Does
console.log("gat method");
output anything to the terminal window?