如何使用AngularJS服务传递多个参数?

时间:2017-03-06 23:57:13

标签: javascript angularjs node.js express angular-http

我从客户端传递了两个params来表示端点它在我的本地机器上给我结果但是当我部署到linux服务器时它不工作没有错误而且没有响应?你认为它可能是params问题吗?

client.js

getServerSearch:function(str,strEnv){
                    return $http.get("/serverSearch?searchTxt=" + str + '&searchEnv=' + strEnv);
         }

server.js

app.get('/serverSearch', function (req, res) {
    var searchTxt = req.query.searchTxt;
    var searchEnv = req.query.searchEnv;

            searchFileService.readFile(searchTxt,searchEnv,function(lines,err){
                        console.log('Logs',lines);
                          if (err)
                           return res.send();
                           res.json(lines);
                    });
    console.log('Search text', searchTxt);
})

1 个答案:

答案 0 :(得分:1)

某些ASCII字符和大于127的unicode点需要在UTF-8中正确编码,并替换为percent-encoding

AngularJS $ http服务有一个内置的param序列化程序来做到这一点。

function getServerSearch(str,strEnv){
    //return $http.get("/serverSearch?searchTxt=" + str + '&searchEnv=' + strEnv);

    var params = {};
    params.searchTxt = str;
    params.searchEnv = strEnv;

    return $http.get("/serverSearch", { params: params })
        .catch(function(errorResponse) {
            console.log(errorResponse);
            throw errorResponse;
        });

}

同样明智的做法是包含拒绝处理程序以查看从服务器返回的任何内部框架错误或错误。

另见MDN JavaScript reference - encodeURIComponent().