读取来自Node JS Server的响应
我正在编写一个程序,在服务器端编译特定的Java文件,如果在编译时出现错误,我将捕获错误信息并将其发送回客户端。 不过,我已经尝试了很多方法来阅读JSON对象,但无济于事。
所以我的问题是为什么我不能读取服务器在客户端发送的错误string? 我目前使用res.data.err来阅读我的错误响应。
服务器端代码
var cmd=require('node-cmd'); exports.compileTest = function(req,res){ console.log(req.body.data.fileName); var file = req.body.data.fileName; var output = ""; output = cmd.get( 'javac solutionTest/'+file, function(err, data, stderr){ if (err) { console.log(err); res.json({ state : 0 ,err}); } else res.json({ state : 1}); } ); }
客户端代码
$scope.compileSol = function(){ $http.post('/testRun', { data : { fileName : $scope.solutionFileName.name} }).then(function(res){ if(res.data.state==0){ alert(res.data.err); } }).catch(function(error){ }); }
以下是我想要发送到networking浏览器的错误
我想你从你的服务器发送的err
variables是一个JSON对象,对于key: err
。 如果没有,你可以考虑修改它,我下面的方式。
if (err) { console.log(err); res.json({ state : 0 ,err: err}); } else res.json({ state : 1}); }
你客户端的对象响应应该和你发送它的方式一样。 从你的服务器发送它的方式,应该是这样你可以访问它的客户端:
if(res.state==0){ alert(res.err); } }).catch(function(error){ });
我的错误在于假设err
是服务器输出的确切错误。
解决scheme是将其转换为string,然后发送它。
var cmd=require('node-cmd'); exports.compileTest = function(req,res){ console.log(req.body.data.fileName); var file = req.body.data.fileName; var output = ""; output = cmd.get( 'javac solutionTest/'+file, function(err, data, stderr){ if (err) { console.log(err); //added this line err = err.toString(); res.json({ state : 0 ,err:err}); } else res.json({ state : 1}); } ); }