为什么我得到空的结果?

我正在学习JavaScript&Ajax&NodeJs。

我试图build立一个网页,显示从服务器的string。

服务器代码:

var express = require('express'); var app = express(); app.get('/sms', function (req, res) { console.log("Got request: " + req); res.send('Hello World'); console.log("Send result"); }) var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port console.log("Listening at http://%s:%s", host, port) }) 

客户代码:

 <html> <head> <title> Test AJAX </title> </head> <body> <p> <button onclick="sendRequestForSms()"> Get SMS From Server </button> </br> <h1 id="smsId"> SMS: <h1> </p> <script type="text/javascript"> var xmlhttp; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { // code for IE6, IE5 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function() { console.log('State: ' + xmlhttp.readyState + ' status: ' + xmlhttp.status); // 1: server connection established // 4: request finished and response is ready // 200: "OK" // 404: Page not found if (xmlhttp.readyState == 4)// && xmlhttp.status == 200) { console.log('Got Result: ' + xmlhttp.responseText); document.getElementById("smsId").innerHTML = xmlhttp.responseText;//"done"; } }; function sendRequestForSms() { xmlhttp.open("GET", "http://127.0.0.1:8081/sms", true); xmlhttp.send(); } </script> </body> </html> 

我点击button后,我得到一个空string。

这里的日志:状态:1状态:0 Ajax1.html:1 XMLHttpRequest无法加载http://127.0.0.1:8081/sms 。 请求的资源上没有“Access-Control-Allow-Origin”标题。 原因'null'因此不被允许访问。 Ajax1.html:28状态:4状态:0 Ajax1.html:35结果:

为什么我得到一个空string? 我错过了什么? 谢谢

您的客户端代码和服务器代码必须位于相同的来源(相同的主机名,相同的端口),才能发出AJAX请求。

127.0.0.1 不能发送AJAX请求到127.0.0.1:8081。

要修复,请将您的node.js逆向代理到相同的主机名(推荐),或者在node.js中设置Access-Control-Allow-Origin。