2017-03-06 61 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

相關問題