Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript .ajax调用永远不会返回_Javascript_Jquery_Node.js_Express - Fatal编程技术网

Javascript .ajax调用永远不会返回

Javascript .ajax调用永远不会返回,javascript,jquery,node.js,express,Javascript,Jquery,Node.js,Express,我正在使用Express和Node。我有一些代码将JSON发布到另一个将其添加到数据库中的服务 逻辑正在做它应该做的事情,但我正在做的ajax调用永远不会返回,在Chrome开发工具的“网络”选项卡中,它总是显示为“挂起”,并最终以net::ERR\u EMPTY\u RESPONSE出错 谁能告诉我哪里出了问题 Ajax调用 $.ajax ({ type: "POST", url: "/order", contentType: 'application/json',

我正在使用Express和Node。我有一些代码将JSON发布到另一个将其添加到数据库中的服务

逻辑正在做它应该做的事情,但我正在做的ajax调用永远不会返回,在Chrome开发工具的“网络”选项卡中,它总是显示为“挂起”,并最终以net::ERR\u EMPTY\u RESPONSE出错

谁能告诉我哪里出了问题

Ajax调用

$.ajax
({
    type: "POST",
    url: "/order",
    contentType: 'application/json',
    data: orderDataJson,

    success: function () {

        alert("success!");
    },


    error: function (XMLHttpRequest, textStatus, errorThrown) {

        alert("Something went wrong checking out!\n" + textStatus + "\n" + errorThrown);
    }

});
上述路由到/order,后者将数据发布到其他服务:

app.post("/order", function(req, res, next)
{
    var options = {
        uri: endpoints.ordersUrl + "order",
        method: 'POST',
        json: true,
        body: req.body
    };

    request(options, function(error, response, body) {

        if (error !== null )
        {
            return;
        }

        if (response.statusCode == 200 && body != null && body != "")
        {

            if (body.error)
            {
                res.status(500);
                res.end();
                return;
            }

            res.end(); // UPDATED AFTER COMMENT
            return;

        }
        console.log(response.statusCode);

    });

});
这是其他服务中的相关代码(它正确地将内容添加到数据库中)

if(request.method==“POST”)
{
交换机(路径)
{
//添加新订单
案例“/订单”:
变量体=“”;
请求.on('data',函数(data){
body+=数据;
});
request.on('end',function(){
var orderData=JSON.parse(body);
//插入订单表
var saleDate=getDate();
var ordersQuery=“插入订单(customerId,saledate)”+
“值(“+orderData.customerId+”,“+saleDate+”)”;
查询(ordersQuery,函数(err,result)
{
如果(错误)
{
犯错误;
}
var orderId=result.insertId;
//插入订单详细信息
对于(var i=0;i
尝试将此添加到错误块中:

if (error !== null ) {
    res.status(500).send('Internal server error!');
    return;
}

我解决了这个问题。问题似乎是express‘middleware’功能应该是:

app.post("/order", function(req, res, body)
与之相反:

app.post("/order", function(req, res, next)
从expressjs:


如果当前中间件函数没有结束请求-响应周期,它必须调用next()将控制权传递给下一个中间件函数。否则,请求将挂起。

在服务器端代码的非错误路由中,您似乎没有将end作为函数调用:
res.end
应该是
res.end()
发现得很好,但是这个问题仍然存在。您必须使用http类调用其他服务。您是否尝试过这个var http=require(“http”);http.get(options)?抱歉,刚才看到您已经更改了它以及对问题的注释
app.post("/order", function(req, res, next)