【问题标题】:Not able to return JSON data from NodeJS server coded using Typescript无法从使用 Typescript 编码的 NodeJS 服务器返回 JSON 数据
【发布时间】:2013-12-14 17:01:31
【问题描述】:

我的项目在后端有 NodeJS + Express,它必须将 JSON 数据作为 POST 响应返回到 JQuery 中的前端。由于某种原因,消息没有到达前端——使用 JQuery AJAX 调用。虽然我不完全确定它在哪里中断,因为前端代码应该在调用失败或成功时显示一条警报消息,但没有显示任何消息。

服务器:

// <reference path="lib/Main.d.ts" />

import express = require('express');
import http = require('http');
import path = require('path');
import fs = require('fs');

var routes = require('./routes');
var user = require('./routes/user');
var formidable = require('formidable');

var app = express();
app.use(express.logger());

// all environments

app.set('port', process.env.PORT || 8080);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));


/**
 * Receives JSON Data
 */

app.post("/data", function (request, response){
    console.log("Body called");
    var x = String(request.body.test);
    console.log(x);
    console.log("Sending response");
    var resp = "Received " + x;
    response.send(JSON.stringify({
        message : resp
    }));
});

客户:

function start() {
     send({
        test: 123
    },function test(responseData){
            alert(responseData);
        }
    )
}


function send(data : any, success:(String) => void){
    $.ajax({
        type: 'POST',
        data: JSON.stringify(data),
        contentType: 'application/json',
        url: '/data',
        success: function (responseData) {
            var x = JSON.parse(responseData);
            alert("success");
            success(x.body.message);
        },
        error: function(err){
            alert("failure");
            var e = serverCommunicationFailureError();
            e.displayErrorMessage();
        }
    });
}

控制台消息:

Body called
123
Sending response

【问题讨论】:

    标签: jquery express typescript


    【解决方案1】:

    您的代码包含

    return JSON.parse(responseData);
    alert("success");
    

    如果 alert 是在 return 语句之后,您认为它如何到达调用?

    【讨论】:

    • 谢谢。那显然是错误的。即使在修复它之后,输出也没有任何变化。您还发现其他问题吗?
    • success处理程序中的代码不应该是success(x.message)吗?
    • 还是不行。除了糟糕的编码之外,您是否看到任何实际的语法错误?
    猜你喜欢
    • 1970-01-01
    • 2021-07-01
    • 2016-12-08
    • 1970-01-01
    • 2020-10-01
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多