Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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
Angularjs 成功功能不起作用_Angularjs_Angular Ui Router - Fatal编程技术网

Angularjs 成功功能不起作用

Angularjs 成功功能不起作用,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我正在发送http请求,当该请求完成时,我正在尝试转到另一个状态,但问题是它没有进入成功回调,我以为我收到了错误,所以我编写了错误回调,它没有进入该状态。谁能告诉我我做错了什么 $scope.submitUpdatedData= function(user){ debugger; // $http.post('/url',{params: value}).sucess(function(){ API.updateRecord(user).success(functio

我正在发送http请求,当该请求完成时,我正在尝试转到另一个状态,但问题是它没有进入成功回调,我以为我收到了错误,所以我编写了错误回调,它没有进入该状态。谁能告诉我我做错了什么

  $scope.submitUpdatedData= function(user){
    debugger;
    // $http.post('/url',{params: value}).sucess(function(){
    API.updateRecord(user).success(function(res){
      $state.go('app' ,{} , {reload: true });
      console.log("Hello");
    });
  }
下面给出了API代码。这里我调用http调用

.factory('API', function($http) {
  var api = {};
  var baseURL = 'http://localhost:3000';

  api.addRecord = function(record) {
      console.log(record);
    // $http.post(baseURL + '/addData', {name: record.name}.);
      return $http.post(baseURL + '/addData', {rec:record});
  };

  api.deleteRecord = function(id){
    return $http.get(baseURL +'/delete/' + id );
  };

  api.updateRecord  = function(user){
    return $http.post(baseURL + "/update/" ,{rec:user});
  };

  api.getAllRecord = function(){
    return $http.get(baseURL+'/getAll');
  };

  api.getOneRecord = function(id){
    return $http.get(baseURL + '/getOne/' + id)
  };

  return api;
})
更新

我已经用then替换了.success部分,但它仍然不起作用

第二次更新

这是我的服务器端代码

  var express = require('express');
var mongoose = require('mongoose');
var util = require('util');
var bodyParser = require('body-parser')
var app = express();
var Schema = mongoose.Schema;
require('node-monkey').start({host: "127.0.0.1", port:"50500"});

var allowCrossDomain = function(req, res, next) {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
  res.header('Access-Control-Allow-Headers', 'Content-Type');

  next();
};
app.use( bodyParser.json() );
app.use(bodyParser.urlencoded({     // to support URL-encoded bodies
  extended: true
}));
// app.use(express.json());       // to support JSON-encoded bodies
// app.use(express.urlencoded()); // to support URL-encoded bodies
app.use(allowCrossDomain);
// app.use('/' , require('./index'))
mongoose.connect('mongodb://localhost:27017/myappdatabase');

var userSchema = new Schema({
  name:  String,
  password: String
});



var Todo = mongoose.model('Todo', userSchema);


app.get('/getAll' , function(req, res){
    Todo.find({} , function(err , todos){
      if (err){
        res.send(err);
      }
      console.log(todos);
      res.send(todos);
    });
});

app.get('/delete/:name' , function(req , res){
  console.log(req.params);
  console.log(req.params.name);
  Todo.remove({
            name : req.params.name
        }, function(err, todo) {
            if (err)
                res.send(err);
            // get and return all the todos after you create another
            Todo.find(function(err, todos) {
                if (err)
                    res.send(err)
                res.json(todos);
            });
        });
});

app.get('/getOne/:id' , function(req , res){
  Todo.find({name : req.params.id}, function(err, todo) {
            if (err)
                res.send(err);
            res.send  (todo[0]);
            // get and return all the todos after you create another
        });
});


app.post('/update', function(req , res){
  console.log(req.param('rec').name);
  Todo.update({_id:req.param('rec').id} , {$set : {name:req.param('rec').name , password:req.param('rec').password}} , function(err){
    if(err)
      res.send("Error occured");
    res.send("true");
  });
});


app.post('/addData' , function(req , res){
  console.log( req.param('rec').name);

  var p = new Todo({name: req.param('rec').name  , password: req.param('rec').password});
  p.save(function(err){
    if(err){
      res.send(err);
      console.log(error);
    }
    res.json(p);
  });
});


var server = app.listen(3000, function () {
  var host = server.address().address;
  var port = server.address().port;

  console.log('Example app listening at http://%s:%s', host, port);
});



// module.exports = app;

似乎不推荐使用
success
error
,您应该使用
然后使用

API.updateRecord(user).then(function(res){
    $state.go('app' ,{} , {reload: true });
    console.log("Hello");
});
$http legacy promise方法的成功和错误已被删除 不赞成。改用标准then方法。如果 $httpProvider.useLegacyPromiseExtensions设置为false,则这些 方法将抛出$http/legacy错误。 来源


API服务器似乎从未响应您的请求。也许你可以为你的请求设置一个超时。它说你可以做到:

$http.post(url, data, {timeout: 100});

这将使您的请求在100毫秒后超时。

您是否在控制器顶部声明了
API
?确切的错误是什么?@JoeLloyd是的,我声明了API,这不是一个错误,只是当updateRecord的结果返回时,它既不进入success and error回调,也不进入angular的哪个版本。success已被弃用,我想知道最新版本是否还包括它。@KevinB什么是成功的替代品?我不知道它被贬值了,可能是我的应用程序出错的原因吧哈哈@詹姆斯,你确定你的州是正确的吗?就像你试过只需点击一个按钮就可以调用
$state.go(someState)
。然后就可以替换了。您还应该使用.catch来捕获任何错误。是的,我当时尝试过使用,但不起作用,版本是v1.4.3。我在其他功能中使用过它,它工作正常,但在这里它不工作。它由服务器应答,但不进入回调。如果没有收到任何回调,您如何测试服务器是否应答?但这只检查是否与db联系,这并不意味着服务器会发送响应。很抱歉,我在前面的评论中没有告诉你,但是承诺也会被返回