Ajax 中的 JSON 与 mongoose
我有以下 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
所以 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