0
我打電話給一個node'js進程來刮開twitter並從數據創建圖表...來自節點的ajax響應
這裏是代碼。
var http = require('http');
var url = require('url');
var exec = require('child_process').exec;
var fs = require('fs');
var filepath = 'filenamegraph.png';
http.createServer(function(req,res){
var urlstr = url.parse(req.url,true);
var twit = exec("php -f twitter-scraper.php "+urlstr.query.term ,function(error, stdout, stderr){
var graphstring = stdout;
var stream = fs.createWriteStream("graph.txt");
stream.once('open', function(fd){
stream.write(graphstring, function(){
exec('dot -T png -o filenamegraph.png graph.txt', function(){
fs.stat(filepath,function(err,stat){
res.writeHead(200,{'Content-Type':'image/png', 'Content-Length': stat.size });
fs.readFile(filepath,function(err,file_conts){
res.write(file_conts);
res.end();
});
});
});
});
});
});
}).listen(1337);
所有這就是是虎背熊腰,腳蹬dory的...
現在我把這個用:
$.ajax({
url: 'http://eavesdropper.dev:1337',
data: { term : $.url.parse().params.term },
success: function(data) {
var res = $.parseJSON(data);
console.log(res);
$("body").append('<img src="filenamegraph.png" />');
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(jqXHR,'errror - ' + textStatus + " - " + errorThrown + ' ||');
},
complete: function(jqXHR, textStatus){
console.log(jqXHR, textStatus)
}
});
幕後的工作是不錯,但我得到這個...
Object { readyState=0, status=0, statusText="error"} error - error - ||
不知道下一步是什麼,所以任何提示非常感謝。
PS:直接在瀏覽器中運行,腳本正確地生成圖表,所以這確實是數據被返回到正在變得沮喪的ajax調用。
是的。我發佈後意識到,但你是正確的 - 服務器將返回一個圖像。 ajax請求非常重要,因爲這是一個大型信息系統的組件,所有這些都需要進行更新。看着只接受原始圖像數據的ajax請求。 – 2012-07-14 21:21:25