Javascript .ajax调用永远不会返回
我正在使用Express和Node。我有一些代码将JSON发布到另一个将其添加到数据库中的服务 逻辑正在做它应该做的事情,但我正在做的ajax调用永远不会返回,在Chrome开发工具的“网络”选项卡中,它总是显示为“挂起”,并最终以net::ERR\u EMPTY\u RESPONSE出错 谁能告诉我哪里出了问题 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',
$.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)