search

Home  >  Q&A  >  body text

javascript - angularjs与express的双向数据交互

用angularjs写的前端代码,后台用nodejs的web框架express。为实现ajax,前端使用$http,测试代码大致如下:

$http.get('https://localhost:8888/'
).success(function(data, status, headers, config){
alert(data);
}).error(function(data, status, headers, config){
alert(status);
})

后台主要express代码:

app.get('/', function(req, res){
console.log('receive a message.');
res.send({"I am a message"});
});

还有些创建服务器的代码已省去。。

仅仅为了测试而已,但却一直无法做到交互,看过官网的API,应该没错的。不止是get,post也一样没用,服务器提示的确收到了来自客户端的请求,但服务器端返回的数据却没被前端获取。不过在浏览器中键入https://localhost:8888/,请求后浏览器收到了I am a message的返回信息。我觉得是我的获取返回数据的方法有错,可能那里的概念搞错了把。。

刚刚接触express和angular,想知道这两者间的数据交互方式。能实现双向发送,服务器与客户端都能主动向另一方发送数据,但不能用socket,我知道ajax能做到。。求轻喷~~

巴扎黑巴扎黑2828 days ago484

reply all(3)I'll reply

  • PHPz

    PHPz2017-04-10 13:15:04

    http,https?

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 13:15:04

    首先,angular的http的路径不需要写完整的,只要写$http.get('/').success().error()即可.
    其次,res.send({"I am a message"});{"I am a message"}这个数据不是一个正确的json数据,应该返回{message:'I am a message'},然后在在$http的success函数里面使用alert(data.message)来获取json的message属性.

    reply
    0
  • 黄舟

    黄舟2017-04-10 13:15:04

    1 呵呵 楼主一行代码写错了呵
    res.send({"I am a message"}); (javascript 没有这样的写法{“xxx”}) 语法都写错了
    应该是 res.send({title:"I am a message"}); 后端要返回一个对象啊

    然后前端 就可以alert(data.title);就可以了

    2 如何提交数据? angular文档写的不好 没有例子

    get : 提交数据
    $http
    .get('accept.php', {
    params: {
    source: link,
    category_id: category
    }
    })
    .success(function (data,status) {
    $scope.info_show = data
    });

    post : post提交数据

    $http.post("/handle/post", {
    foo: "FOO",
    bar: "BAR"
    }).success(function (data, status, headers, config) {
    // TODO
    }).error(function (data, status, headers, config) {
    // TODO
    });

    同时还要注意一个问题 如果后端是PHP的话

    http://stackoverflow.com/questions/17225088/http-get-parameters-does-not-work

    http://stackoverflow.com/questions/11442632/how-can-i-post-data-as-form-data-instead-of-a-request-payload

    reply
    0
  • Cancelreply