2017-03-06 58 views
0

我已经从客户端传递了两个参数来表示端点它给我在本地机器上的结果,但是当我部署到Linux服务器时它不工作没有错误和没有响应?你认为这可能是params问题?如何通过多个参数来表达AngularJS服务?

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); 
}) 

;

+0

你试图把的console.log消息显示什么值'searchTxt'和'searchEnv'面前有'... READFILE()'?如果是这样,结果是什么? – rasmeister

+0

在我们调用'searchFileService.readFile'之前,甚至没有在server.js中打印值,这就是为什么我提出这个问题 – hussain

+0

您可以根据需要设置尽可能多的查询参数(达到一些很长的字符串长度限制),所以不太可能是你的问题。我建议你应该在'req.originalUrl'和'req.query'上做一个console.log,看看你得到的是不同的。这似乎是基本的调试,只需几分钟即可使用调试器或console.log()语句发现不同的内容。 – jfriend00

回答

1

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

AngularJS $ http服务有一个内置的参数串行器来做到这一点。

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().

+0

我改变了代码根据你的答案,但它仍然没有解决我的问题 – hussain

+0

我很遗憾听到这一点。我将为其他正在搜索**的读者**“如何传递多个参数”留下**答案。** – georgeawg

相关问题