为什么我'我得到的结果是空的

Why I'm getting empty result?

本文关键字:结果是 为什么      更新时间:2023-09-26

我正在学习JavaScript&Ajax;NodeJs。

我正在尝试构建一个显示服务器字符串的网页。

服务器代码:

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>

点击按钮后,我得到一个空字符串。

日志如下:状态:1状态:0Ajax1.html:1 XMLHttpRequest无法加载http://127.0.0.1:8081/sms.请求的资源上不存在"Access Control Allow Origin"标头。因此,不允许访问源"null"。Ajax1.html:28状态:4状态:0Ajax1.html:35得到的结果:

为什么我得到一个空字符串?我错过了什么?感谢

您的客户端代码和服务器代码必须在同一个源(相同的主机名、相同的端口)上才能发出AJAX请求。

127.0.0.1无法向127.0.0.1:8081发送AJAX请求。

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