Javascript 如何使用node.js从客户端的服务器获取JSON?

Javascript 如何使用node.js从客户端的服务器获取JSON?,javascript,json,node.js,Javascript,Json,Node.js,我已经做了好几个小时了,不得不问另一组敏锐的眼睛。提前谢谢 基本上,当我转到我的URL(例如55.55.55.55/select)时,它会从数据库发送JSON数据以供查看 现在在客户端,我尝试访问数据,但由于某些原因无法访问****顺便说一句,我确实单击以触发eventListener。 我尝试过很多不同的事情,比如修改代码和研究,但仍然无法解决这个问题 document.getElementById('clicks').addEventListener('click', function(e

我已经做了好几个小时了,不得不问另一组敏锐的眼睛。提前谢谢

基本上,当我转到我的URL(例如55.55.55.55/select)时,它会从数据库发送JSON数据以供查看

现在在客户端,我尝试访问数据,但由于某些原因无法访问****顺便说一句,我确实单击以触发eventListener。 我尝试过很多不同的事情,比如修改代码和研究,但仍然无法解决这个问题

 document.getElementById('clicks').addEventListener('click', function(event){
var req = new XMLHttpRequest();

var reqString = url + "/select";

req.open('GET', reqString, true);


req.addEventListener('load',function() {
if (req.status >= 200 && req.status < 400) {

    var response = req.responseText; // used to be var response = 

    // JSON.parse(req.responseText);
    document.getElementById('status').textContent = req.responseText;

    //console.log(response);
    //alert(response.name[0]);
    selectOption(response);
    //document.getElementById('status')..responsetext = req.responseText;

}else {
        // If a server error was received, post the response text to the   log
        console.log("Error in network request: " + req.statusText);
   }
   });

   req.send();

 //event.preventDefault();
 }); 


//html
<form id="clicks">
    <fieldset>
        <legend>Data</legend>
        <p>
            <input type="submit" class="buttons" id="submitBtn" name="submitBtn">
        </p>
    </fieldset>
   </form>

<p id="status"></p>
<div>
    <select id="selectNumber">
        <option>Choose a Hotel</option>
    </select>
</div>
<script src="/script.js">

</script>
document.getElementById('clicks')。addEventListener('click',函数(事件){
var req=新的XMLHttpRequest();
var reqString=url+“/select”;
请求打开('GET',请求字符串,true);
请求addEventListener('load',function(){
如果(请求状态>=200&请求状态<400){
var response=req.responseText;//用于var response=
//parse(req.responseText);
document.getElementById('status').textContent=req.responseText;
//控制台日志(响应);
//警报(响应名称[0]);
选择选项(响应);
//document.getElementById('status')…responsetext=req.responsetext;
}否则{
//如果收到服务器错误,请将响应文本发布到日志中
日志(“网络请求中的错误:+req.statusText”);
}
});
请求发送();
//event.preventDefault();
}); 
//html
资料

选择酒店
编辑:
(不是问题):hotelScript.js:43 XMLHttpRequest无法加载%55.55.55/select。跨源请求仅支持协议方案:http、数据、chrome、chrome扩展、https、chrome扩展资源

首先尝试在导航器中访问URL,看看是否得到了反JSON

无论如何,我想你必须改变
send
for
end

res.end(tableInfo);
end
功能关闭连接。然后导航器知道传输已结束,所有数据都已传输

也改变

req.addEventListener('load',function() {


我认为您可以使用以下方法将结果解析为json:
var obj=JSON.parse(queryObj.jsonData)

问题在于相同域源策略(限制)。服务器的URL地址应与浏览器URL的端口、主机和协议完全匹配


如果node.js在不同于web应用程序的端口(甚至主机)上运行,则必须在web服务器上创建一个混响代理。

您的url变量到底是什么样的? 它似乎错过了http://前缀。 确保它在url中

req.setRequestHeader("Content-Type", "application/json");
req.end(JSON.stringify(payload));

这些是在加载后需要的

“由于某些原因无法”相当模糊。会发生什么?控制台上报告了什么?加载事件处理程序是否启动?您是否在浏览器的“开发人员工具”的“网络”选项卡中看到该请求?那么响应呢?我没有从控制台日志中得到任何输出。让我仔细检查一下开发工具。你的URL看起来怎么样。是
http://something
file:///somepath
??我指的是你的HTML页面URL。它实际上是
http://something
是的,当我直接转到55.55.55.55/select时,我会得到JSON,但不会从另一个页面获得。您是否尝试通过
结束
更改
发送
?还可以尝试更改document.getElementById('status')。innerHTML=req.responseText
document.getElementById('status').textContent=req.responseText还是一样,这可能是一个EventListener问题,尽管我不明白为什么,开发工具上没有显示EventListener。您如何在浏览器中运行客户端HTML代码?在本地主机web服务器上还是作为文件?您的浏览器url栏中写了什么?http://或file://?没有区别。这两者似乎没有相互作用。
req.setRequestHeader("Content-Type", "application/json");
req.end(JSON.stringify(payload));