我正在编写一个程序,其中将在服务器端编译特定的Java文件,如果编译中有任何错误,我将捕获错误信息并将其发送回客户端。但是,我尝试过许多读取JSON对象的方法,但都没有效果。
因此,我的问题是,为什么我不能读取服务器在客户端发送的错误字符串?我正在使用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){
});
}下面是我想发送到web浏览器的错误

发布于 2017-11-05 15:55:48
我的错误在于假设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);
//added this line
err = err.toString();
res.json({ state : 0 ,err:err});
}
else
res.json({ state : 1});
}
);
}发布于 2017-11-05 14:42:45
我认为您从服务器发送的err变量是一个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){
});https://stackoverflow.com/questions/47122674
复制相似问题