javascript - 如何进行从客户端到服务器的(近乎)单向通信

标签 javascript ruby ajax httprequest

我想将消息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/

相关文章:

javascript - 谁能告诉我这个功能是做什么的?

php - lastinsertId() 和第二个查询插入问题

javascript - 如何在 HTML5 中实现应用程序范围的内存缓存?

javascript - 许多选择的实时计数器

ruby - 将绝对路径与 Pathname 类连接起来

javascript - 使用 Ajax 如何将表单中的下拉菜单选择值与数据库中的记录相匹配,并获取关联的记录/行以预填充表单?

javascript - 如何在 JSHint 中禁用 "use strict"

javascript - 使用 Flux 时保持 UI 与 ajax 调用同步的惯用方法是什么?

ruby - 正则表达式包含单连字符但排除双连字符

php - 如何以编程方式编写 nslookup?