GET Ajax返回响应的html代码而不是json对象

时间:2014-04-22 00:45:07

标签: jquery node.js mongodb openshift

我有一个ajax get请求,如下所示。我正在使用nodejs express向openshift中的server.js发出GET请求。但是,我在响应方法中获取html内容而不是json对象。这两个请求都是针对同一个域的。我使用的节点模块是moongojs,mongodb和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 );

                }
            });

我的server.js文件包含以下代码

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);
    });
  };

3 个答案:

答案 0 :(得分:1)

$.ajax方法调用中更改此

dataType: "text",

dataType: "json",

请参阅文档以获取更多详细信息

https://api.jquery.com/jQuery.ajax/

并请检查您收到的数据是否是有效的json,请使用http://jsonlint.com/

进行检查

答案 1 :(得分:1)

res.send(names)不是JSON,您必须使用JSON.stringify对数据进行字符串化。

在数据库调用之前尝试测试以检查它是否有效。

res.send( JSON.stringify( {testData:'test'} ) )

修改

正如评论中所述,请检查以确保您的请求被路由到您声明的正确路线。

console.log("gat method");是否向终端窗口输出任何内容?

答案 2 :(得分:0)

您可以使用res.json发送JSON响应,而不是res.send

res.json(obj)

此方法还将Content-Type设置为application/json