REST API没有响应jQuery POST

时间:2014-05-14 03:30:38

标签: jquery node.js rest

我正在构建一个REST API(在Node上带有ExpressJS)作为我当前项目的一部分,但是当我尝试通过jQuery进行POST时遇到了一个奇怪的问题。

当我从用户界面触发此来电,并观看Chrome开发工具的网络标签时,该通话会在失败前暂停一段时间。显然,服务器端正在发生一些事情。跳转到我的节点控制台,看起来每当我进行此POST时,我的控制台都输出如下内容:

{ message: 'Cast to ObjectId failed for value "jquery-1.10.2.min.map" at path "_id"',
name: 'CastError',
type: 'ObjectId',
value: 'jquery-1.10.2.min.map',
path: '_id' }

如果我没有弄错的话,这是一条Mongoose错误消息。但是,我的API代码中的断点永远不会被击中。看起来jQuery调用和API执行之间发生了一些事情。我将附上以下源代码,以证明有用。有没有人见过这样的东西?

的jQuery

    $.ajax({
        type: "POST",
        url: "/api/DataPoint/UpdateIdentifier",
        dataType: "json",
        data: {
            dataPointID : dataPointID,
            newValue : newVal,
            identifierIndex: identifierIndex
        },
        complete: dataUpdateCompleteHandler,
        success: dataUpdateSuccessHandler,
        error: dataUpdateErrorHandler
    });

API代码

app.post("/api/DataPoint/UpdateIdentifier", function(req, res){

var datapointID = req.body.dataPointID,
    newValue = req.body.newValue,
    identifierIndex = req.body.identifierIndex;

DataPoint.findById(datapointID)
.exec(function(err, datapoint){

    if (err) return console.log(err);

    datapoint.customIdentifiers[identifierIndex] = newValue;
    datapoint.save(function(err){
        if (err) res.json(err);
        else res.send(200); 
    });
});

});

1 个答案:

答案 0 :(得分:1)

您可以通过编辑jquery副本来禁用地图。

就不响应而言,我猜你将错误记录到stdout,但是你没有回复请求。所以改变这个:

if (err) return console.log(err);

类似于:

if (err) {
  err.status = 500;
  next(err);
  // or use `res.json(err);` instead of `next(err);` if that's what
  // you're expecting on the client side
  return console.log(err);
}

并在next之后在该路由处理程序的函数参数列表中添加res

app.post("/api/DataPoint/UpdateIdentifier", function(req, res, next){