Ajax 中的 JSON 与 mongoose

发布于 2024-11-09 11:06:04 字数 989 浏览 0 评论 0原文

我有以下 Mongoose 服务器(服务器,而不是 javascript 库)

        std::ostringstream oss;
        oss << "{ \"key\" : \"value\"}";

        mg_printf(conn,
            "HTTP/1.1 200 OK\r\n"
            "Cache: no-cache\r\n"
            "Content-Type: text/plain\r\n"
            "Content-Length: %d\r\n"
            "\r\n",
            oss.str().length());
        mg_write(conn, oss.str().c_str(), oss.str().length());

:在 Firefox 中,它运行良好,我可以看到 JSON 消息 { "key" : "value"}。 Firebug 对此很满意,并向我展示了解释后的 JSON 对象。

当我使用 $.getJSON("http://127.0.0.1:8080/AtoB", [...] ) 访问相同的 URL 时,Firebug 会显示正确的标头,但正文为空。

我应该怎么办 ? 谢谢

附加信息:

  • 也不适用于 application/json 。为了便于调试,我保留了文本/纯文本。
  • 不适用于 $.get() 或其他。问题出在之前。
  • 也不适用于原始 xmlhttprequest!
  • 我尝试使用最后的 \0 和最后的 \n 但没有运气。
  • 当从 jQuery 访问时,原始 mongoose 服务器 (mongoose.exe) 会产生相同的行为。

I have the following Mongoose server (the server, not the javascript library):

        std::ostringstream oss;
        oss << "{ \"key\" : \"value\"}";

        mg_printf(conn,
            "HTTP/1.1 200 OK\r\n"
            "Cache: no-cache\r\n"
            "Content-Type: text/plain\r\n"
            "Content-Length: %d\r\n"
            "\r\n",
            oss.str().length());
        mg_write(conn, oss.str().c_str(), oss.str().length());

When I open the page in Firefox, it works well, I can see the JSON message { "key" : "value"}. Firebug is happy with it, and shows me the interpreted JSON object.

When I access the same URL with $.getJSON("http://127.0.0.1:8080/AtoB", [...] ), Firebug shows me the correct header, but an empty body.

What should I do ?
Thanks

Additional info :

  • Doesn't work with application/json either. I left text/plain for ease of debugging.
  • Doesn't work with $.get() or others. The problem is before.
  • Doesn't work with a raw xmlhttprequest, too !
  • I tried with a final \0 and a final \n with no luck.
  • The original mongoose server (mongoose.exe) produces the same behaviour when accessed from jQuery.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

岁月静好 2024-11-16 11:06:04

所以 XmlHttpRequest 只接受到同一主机的连接...我知道这一点,但完全忘记了。

.html 文件也必须通过 Mongoose 访问(同一主机,同一端口),而不是使用 file://

这个问题确实是 AJAX 响应在 C++ 中无效,但在 Apache 中无效

So XmlHttpRequest only accepts connections to the same host... I knew that, but competely forgot.

The .html file must be accessed through Mongoose too (same host, same port) instead of using file://

This question really was a duplicate of AJAX response not valid in C++ but Apache

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文