我想将消息m
和数据v
发送到服务器,并且不需要对客户端Javascript上的响应执行任何操作。有没有一个请求方法可以做到这一点?如果没有,我想向客户端返回一个最低可接受的字符串(不会被处理)。最好的方法是什么?
我尝试在 Javascript 上执行此操作,
function report(m,v){
io=new XMLHttpRequest();
io.open("POST","http://localhost:3000?m="+m,true);
io.send(JSON.stringify(v));
return false;
};
作为对此的回应,我发送了我认为是由 Ruby 创建的最小序列化字符串,例如
[].to_json
客户端 Javascript 表示服务器响应状态为 500(内部状态错误)
。
编辑
在服务器端,我有这样的 Ruby 代码:
Rack::Handler::Thin.run(Rack::Builder.new do
map("/") do
run(->env{[200, {}, [server.ajax(
Rack::Utils.parse_nested_query(env["QUERY_STRING"]),
env["rack.input"].read
)]]})
end
end, Port: 3000)
其中server.ajax
方法如下:
def ajax h, v
m, v = h["m"].to_sym, JSON.parse(v)
case m
...
when :error
puts m
p v
return "" # or `[].to_json` or whatever
...
end
end
在特定情况下,我收到消息m
,即'error'
。我从上面的代码中得到了输出,所以我认为问题出在响应上。
最佳答案
500 是内部服务器错误。服务器上的处理函数可能会发生一些运行时错误。不幸的是,仅仅根据您发布的数字和代码,可能很难找出发生了什么(而且我不太了解 Ruby)。尝试从服务器获取实际的堆栈跟踪,而不仅仅是通用的 500 HTTP 状态代码。
正如评论中已经发布的那样,浏览器不会关心您回复的正文内容,因此您只需将其留空即可。
关于javascript - 如何进行从客户端到服务器的(近乎)单向通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13448223/