【问题标题】:GET Ajax returns html code in response instead of json objectGET Ajax 在响应中返回 html 代码而不是 json 对象
【发布时间】:2014-06-06 04:04:58
【问题描述】:

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

【问题讨论】:

  • 先尝试简化请求。不要进行数据库调用,只需在您的server.js 中返回一些 JSON。这样做是为了确保您调用的是正确的路线。
  • 顺便说一句,如果callback 将响应作为参数,则不必将其包装在函数中,即:success: callback

标签: jquery node.js mongodb openshift


【解决方案1】:

在您的$.ajax 方法调用中更改此

dataType: "text",

dataType: "json",

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

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

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

【讨论】:

  • 我照你说的做了。我还从 ajax 调用中删除了 dataType,但它仍然不起作用
【解决方案2】:

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

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

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

编辑

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

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

【讨论】:

  • 我已经从 ajax 调用中删除了 dataType,但它仍然没有工作
  • 更改了答案以指出您的服务器代码存在一些问题。
  • 我尝试了 stringify,但它没有用。我仍然得到 html 作为响应
  • 你得到了什么 html?你确定你的请求被路由到正确的路由吗?
  • 我正在获取原始的 html 页面,用户将其用于获取请求
【解决方案3】:

您可以使用res.json 代替res.send 发送JSON 响应

res.json(obj)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多