【问题标题】:Node.js response issue during AJAX callAJAX 调用期间的 Node.js 响应问题
【发布时间】:2012-08-15 02:58:22
【问题描述】:

也许这似乎是一个非常菜鸟的问题,但我不知道我做错了什么。我想要完成的是一个简单的 AJAX 请求。这是我在服务器端的代码:

http.createServer(function(request, response) {
        response.writeHead(200, {
            "Content-Type": "text/html"     
        });
        response.end("No data to return.");

}).listen(8666);

在客户端我使用 jQuery:

$(document).ready(function() {
        $("#magicSend").on("click", function() {
            $.ajax({                   
               url: "http://localhost:8666/",
               type: "POST"
             });
        });
    });

问题是,根据 Firebug,我得到的是响应标头而不是内容。 AJAX 调用在 Firebug 的控制台上也会变红,尽管它显示“200 OK”。我知道我错过了一些东西,但不知道是什么。

【问题讨论】:

    标签: jquery ajax node.js


    【解决方案1】:

    由于same origin policy 而无法正常工作。

    这可能并不明显,但浏览器也会强制执行该策略,直至端口号。

    所以http://example.com:80 不同于http://example.com:81

    您可以通过jsonp 解决它。

    【讨论】:

      【解决方案2】:

      您是否也在端口 8666 上运行您的网络服务器?从您的代码来看,您的 NodeJS 服务器所做的只是提供一个答案,所以我猜不是。 您不能对不同的端口进行 AJAX 调用,即使它是同一主机(在您的情况下为 localhost)。

      【讨论】:

      • 我正在运行一个简单的 LAMPP 服务器,它在端口 80 上运行。我以这个问题的第一个答案中的代码为例:stackoverflow.com/questions/6011984/…
      • 我找到了使用 JSONP 的解决方法,如下所述:remysharp.com/2007/10/08/what-is-jsonp
      • 就像我说的,你不能在单独的主机名/端口上使用 AJAX 调用。 JSONP 是一种有效的解决方法。
      猜你喜欢
      • 1970-01-01
      • 2012-06-10
      • 1970-01-01
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多