【问题标题】:Javascript xmlhttp get request to nodejs server returns nothingJavascript xmlhttp获取对nodejs服务器的请求不返回任何内容
【发布时间】:2013-05-14 18:57:05
【问题描述】:

在开始之前,我想告诉大家,我自己做了很多寻找这个问题的解决方案。

这是我的 nodejs 服务器:

var http = require('http');
http.createServer(function (req, res) {
    console.log("Recived request url " + req.url);
    var sname = req.url.search("name");
    if(sname != -1){
        sname = sname + "name".length + 1;
        var from = sname;
        while(req.url[sname] != '?' && sname<req.url.length){
            sname++;
        }
        var name = req.url.substring(from,sname);
        console.log("Returning parameter of name - " + name);
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.end(name+'\n');
    }
    else{
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.end('Error - ask about name\n');
    }

}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

它监听 1337 端口,如果请求 url 正确,它会返回一些字符串。

这是我的 JavaScript 代码,询问 nodejs 的答案。

function httpGet(theUrl){
    var xmlHttp = null;
    xmlHttp = new XMLHttpRequest();
    xmlHttp.open( "GET", theUrl, true );
    xmlHttp.send( null );
    return xmlHttp.responseText;
}

var url = httpGet("http://127.0.0.1:1337/?name=Mateusz");

setTimeout(function(){
    document.getElementById("actualnewsspace").innerHTML=url;
    var xurl = httpGet("http://127.0.0.1:1337/?"+url);
},5000)

返回的 xmlHttp.responseText 为空白。 为什么?这是我的问题。

这就是我的nodejs服务器在这件事上要说的

Recived request url /?name=Mateusz
Returning parameter of name - Mateusz
Recived request url /?

如果我卷曲我的服务器,它会返回正确的值。

【问题讨论】:

  • 提示:看看url.parse,它是解析 URL 和查询字符串的一种非常简单的方法 (var query = require('url').parse(req.url, true).query; var sname = query.name;)
  • 另一个提示:直接使用 XMLHttpRequest 对象是一件令人头疼的事情,在我看来并没有增加任何值得理解的地方。我建议使用 jQuery 或类似的,以避免编写自己的 http 客户端代码时出现错误。

标签: javascript node.js xmlhttprequest


【解决方案1】:

xmlHttp.responseText 在您退回时尚未填充。 Ajax 是异步的

查看Using XMLHttpRequest 并绑定一个事件处理程序以监听 HTTP 响应何时到达并处理其中的数据。

【讨论】:

  • 还不能接受答案。看来你是对的。我为返回添加了超时,我得到了一个未定义的返回,但我终于得到了一些东西。我将尝试将事件绑定到处理程序,或者尝试对状态更改做出反应。现在我有一些事情要做。谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-08-28
  • 1970-01-01
  • 1970-01-01
  • 2015-01-26
  • 1970-01-01
  • 2021-02-18
  • 1970-01-01
  • 2013-12-28
相关资源
最近更新 更多