HTML5ページのコード例を見て、AJAXリクエストを介してHTTPサーバーによって返されたデータを取得しましょう。サーバーのポートを1337として指定し、ポート80のWebサイトからHTML5ページを実行するため、これはクロスドメイン操作です。 Access_Control_allow_originフィールドをHTTP応答ヘッダーに追加し、パラメーターを指定してサーバーからドメイン名 +ポート番号にデータを要求できるようにする必要があります(ポート番号を省略すると、ドメイン名の下のポートはサーバーからデータを要求できます)。
静的ページ:index.html(注:サーバー環境に配置する必要があります。Win7システムの場合、IISサービスを有効にしてページテストの直後にページを実行できます。)
コードコピーは次のとおりです。
<!doctype html>
<html>
<head lang = "en">
<メタcharset = "utf-8">
<title> ajax request in node(html5 page)</title>
<script type = "text/javascript">
関数getData(){
var xhr = new xmlhttprequest();
xhr.open( "get"、 "http:// localhost:1337/"、true);
xhr.onedeadystatechange = function(){
if(xhr.readystate == 4){
if(xhr.status == 200){
document.getElementById( "res")。innerhtml = xhr.responsetext;
}
}
}
xhr.send(null);
}
</script>
</head>
<body>
<入力型= "ボタン"値= "get data" onclick = "getData()" />
<div id = "res"> dsdf </div>
</body>
</html>
ノードコード:
コードコピーは次のとおりです。
var http = require( "http");
var server = http.createserver(function(req、res){
if(req.url!== "/favicon.ico"){
res.Writehead(200、{"Content-Type": "Text/Plain"、 "Access-Control-allow-Origin": "http:// localhost"});
res.write( "hello!");
}
res.end();
});
server.listen(1337、 "localhost"、function(){
console.log( "聴取を開始...");
});
最初にサービスを有効にします:node server.js
静的ページを開始します:
[データの取得]ボタンをクリックします
サーバー環境を構成するのが面倒すぎると思われる場合は、編集者の利点を借りてそれを行うことができます。
たとえば、WebStrom 8.0を使用しています。
ページを開始すると、このパスはブラウザに表示されます。
ポートは63342です。現時点では、チームのコードが変更されました。
nodeのserver.jsコード:
コードコピーは次のとおりです。
var http = require( "http");
var server = http.createserver(function(req、res){
if(req.url!== "/favicon.ico"){
res.Writehead(200、{"content-type": "text/plain"、 "Access-control-allow-origin": "http:// localhost:63342"});
//res.setheader();
res.write( "hello!");
}
res.end();
});
server.listen(1337、 "localhost"、function(){
console.log( "聴取を開始...");
});
「アクセスコントロール - アローオリジン」の値を変更しました。
デモを再実行すると、同じ効果が達成されることがわかります
Res.Seetheaderを介して応答ヘッダーを個別に設定することもできます。
上記のres.writehead()をres.setheader()に変更できます。
コードコピーは次のとおりです。
var http = require( "http");
var server = http.createserver(function(req、res){
if(req.url!== "/favicon.ico"){
//res.writehead(200, {"content-type":"text/plain","access-control-allow-origin":http://localhost:63342 "});
res.setheader( "content-type"、 "text/plain");
Res.Setheader( "Access-Control-allow-Origin"、 "http:// localhost:63342");
res.write( "hello!");
}
res.end();
});
server.listen(1337、 "localhost"、function(){
console.log( "聴取を開始...");
});
慎重な学生は、Setheaderメソッドを使用すると、200などのステータスコードが欠落していることを発見した可能性があります。後でコードに行きましょう。
ajaxはサーバー側の日付で戻ります:
サーバー側に戻るときにこのフィールドを削除できます。
set res.senddata = false;
コードコピーは次のとおりです。
var http = require( "http");
var server = http.createserver(function(req、res){
if(req.url!== "/favicon.ico"){
//res.writehead(200, {"content-type":"text/plain","access-control-allow-origin":http://localhost:63342 "});
Res.StatusCode = 200;
res.senddate = false;
res.setheader( "content-type"、 "text/plain");
Res.Setheader( "Access-Control-allow-Origin"、 "http:// localhost:63342");
res.write( "hello!");
}
res.end();
});
server.listen(1337、 "localhost"、function(){
console.log( "聴取を開始...");
});
ステータスコードが設定され、日付情報がブロックされます。
Res.Getheader(名前)設定した応答ヘッダー情報を取得します
Res.RemoveHeader(名前);ヘッダー情報を削除します。書き込み方法でデータが送信されたときに呼び出される必要があります。
res.headerssentプロパティはブール値です。応答ヘッダーが送信されると、プロパティ値は真です。応答ヘッダーが送信されていない場合、プロパティ値は偽です。
server.jsコード:
コードコピーは次のとおりです。
var http = require( "http");
var server = http.createserver(function(req、res){
if(req.url!== "/favicon.ico"){
if(res.headerssent)
console.log( "Response Header sent");
それ以外
console.log( "Response Header not sent");
res.Writehead(200、{"content-type": "text/plain"、 "Access-control-allow-origin": "http:// localhost:63342"});
if(res.headerssent)
console.log( "Response Header sent");
それ以外
console.log( "Response Header not sent");
res.write( "hello!");
}
res.end();
});
server.listen(1337、 "localhost"、function(){
console.log( "聴取を開始...");
});
デモを実行して結果を表示します。
res.write()メソッドはクライアントにデータを送信し、実際には返品値があります。
クライアントに送信されるデータの量が小さい、またはネットワーク速度が高速な場合、ノードは常にデータをオペレーティングシステムのカーネルキャッシュ領域に直接送信し、カーネルキャッシュ領域からデータを取得して相手に送信します。この時点で、書き込みはtrueを返します。
ネットワーク速度が遅い場合、またはデータ量が多い場合、HTTPサーバーは必ずしもすぐにデータをクライアントに送信するわけではありません。ノードはメモリ内のデータをキャッシュし、他の当事者がデータを受け入れることができるときにオペレーティングシステムカーネルを介してメモリ内のデータを相手に送信します。この時点で、書き込みはfalseを返します。
test.txtのコンテンツを設定して、結果をテストできます。
単純なノード+AJAX効果が実現されます。とても簡単ではありませんか?もちろん、より複雑な関数を作成したい場合は、さらに多くのことを学ぶ必要があります。将来それらを更新するためのイニシアチブを取ります。