Tôi gặp phải một hành vi lạ với Node.js http.get
. Tôi thực hiện một yêu cầu cho một url với ajax và muốn nhận được kết quả vào trình duyệt của tôi. Nhưng tôi chỉ nhận được một số nội dung của thẻ <head>
và không có nội dung nào khác, không có nội dung <body>
. Nhưng nếu tôi gửi kết quả đến bảng điều khiển hệ thống (console.log(chunk)
), tôi nhận được kết quả như tôi muốn nhận được - toàn bộ trang. Dưới đây là các bước của tôi:"http.get" của Node.js không trả lại toàn bộ nội dung phản hồi cho trình duyệt mà chỉ là một phần của thẻ <head>. Làm thế nào để có được phản ứng đầy đủ?
// Simple jQuery Ajax GET
$.ajax({
type: "GET",
url: "/myapppath", // send to my app's url
data: {foo: "bar"},
success: onLoad, // the callback, see just bellow
error: onError,
dataType: "text"
});
// With this callback function I want to insert the result into <div id="baz">
function onLoad(resp) {
document.getElementById("baz").innnerHTML = resp;
}
// In /myapppath
http.get("http://stackoverflow.com/", function(result) {
result.setEncoding('utf8');
result.on("data", function(chunk) {
console.log(chunk); // this successfully returns the whole page but into system console
res.end(chunk); // this returns just a piece of <head> tag into the browser.
});
});
Vì vậy, trong tôi <div id="baz">
tôi chỉ nhận được một số mảnh <head>
thẻ của http://stackoverflow.com/
yêu cầu, không có <body>
tag và nội dung của nó. Đó là tất cả tôi nhận được trong <div id="baz">
thay vì toàn bộ trang:
<!DOCTYPE html>
<html>
<head>
<title>Stack Overflow</title>
<link rel="shortcut icon" href="https://cdn.sstatic.net/stackoverflow/img/favicon.ico">
<link rel="apple-touch-icon image_src" href="https://cdn.sstatic.net/stackoverflow/img/apple-touch-icon.png">
<link rel="search" type="application/opensearchdescription+xml" title="Stack Overflow" href="/opensearch.xml">
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.sstatic.net/js/stub.js?v=dd6898efd655"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.sstatic.net/stackoverflow/all.css?v=8a5907e853ab">
<link rel="alternate" type="application/atom+xml" title="Feed of recent questions" href="/feeds">
<script type="text/javascript" defer>
</script>
<script type="text/javascript"> StackExchange.init({"stackAuthUrl":"https://stackauth.com","serverTime":1374771485,"styleCode":true,"enableUserHovercards":true,"site":{"name":"Stack Overflow","description":"Q&A for professional and enthusiast programmers","isNoticesTabEnabled":true,"recaptchaPublicKey":"6LdchgIAAAAAAJwGpIzRQSOFaO0pU6s44Xt8aTwc","enableSocialMediaInSharePopup":true},"user":{"fkey":"b1d105a0cf61e49216c5750a6ad60dec","isAnonymous":true}});
StackExchange.using.setCacheBreakers({"js/prettify-full.js":"6c261bebf56a","js/moderator.js":"7cf00e91ce39","js/full-anon.js":"c5bf51314708","js/full.js":"02e9182c23d3","js/wmd.js":"2f79c03846d5","js/third-party/jquery.autocomplete.min.js":"e5f01e97f7c3","js/mobile.js":"e8e23ad37820","js/help.js":"6e6623243cf6","js/tageditor.js":"450c9e8426fc","js/tageditornew.js":"b6c68ad4c7dd","js/inline-tag-editing.js":"8e84e8a137f7","js/revisions.js":"7273bb714bba","js/review.js":"2b3ae123e376","js/tagsuggestions.js":"aa48ef6154df","js/post-validation.js":"bb996020492a","js/explore-qlist.js":"1c5bbd79b562","js/events.js":"37756ef3ba47"});
</script>
<script type="text/javascript">
StackExchange.using("gps", function() {
StackExchange.gps.init(true);
});
</script>
<script type="text/javascript">
StackExchange.ready(function() {
$('#nav-tour').click(function() {
StackExchange.using("gps", function() {
StackExchange.gps.track("aboutpage.click", { aboutclick_location: "headermain" }, true);
});
});
});
</script>
</h
Nhưng trong console.log(chunk)
tôi nhận được toàn bộ trang in trong giao diện điều khiển như tôi đã nói ở trên.
Điều gì đang xảy ra? Tại sao http.get
không trả lại phản hồi đầy đủ vào trình duyệt? Tôi đã bỏ lỡ cái gì? Điều gì làm giảm phản ứng?
Cảm ơn! Bản chất không đồng bộ của Nodejs đôi khi thổi tâm trí tôi – antongorodezkiy