javascript - 为什么我得到空结果?

标签 javascript ajax node.js

我正在学习 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 状态:0 Ajax1.html:1 XMLHttpRequest 无法加载 http://127.0.0.1:8081/sms 。请求的资源上不存在“Access-Control-Allow-Origin” header 。因此,不允许访问来源“null”。 Ajax1.html:28 状态:4 状态:0 Ajax1.html:35 得到结果:

为什么我得到一个空字符串?我缺少什么? 谢谢

最佳答案

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

127.0.0.1 无法将 AJAX 请求发送到 127.0.0.1:8081。

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

关于javascript - 为什么我得到空结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33749397/

相关文章:

javascript - 是什么允许我在 React js 文件中 `require` 模块或库?

javascript - 让 Angular 检测 $scope 中的变化

javascript - 如何在ajax调用中每次点击按钮后刷新表格

javascript - 这个 NodeJS API 做得正确吗? - Chatfuel 没有按预期解析它

node.js - 搜索创建日期大于 14 天前的用户,然后更新过期字段

javascript - 在 asp.net MVC 中提交局部 View 时如何显示加载微调器?

javascript - 防止按钮对 html 输入和按钮标签的影响

javascript - 多个 AJAX 刷新和 TinyMCE 有问题

javascript - 如何将数据加载到 Javascript 对象中

mysql - 我应该使用 sql COUNT(*) 还是使用 SELECT 来获取行并稍后计算行数