1

我想将消息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 说the server responded with a status of 500 (Internal State Error)

编辑

在服务器端,我有一个这样的 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)

whereserver.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'. 我从上面的代码中得到输出,所以我认为问题出在响应上。

4

1 回答 1

1

500 是内部服务器错误。您在服务器上的处理函数中可能发生了一些运行时错误。不幸的是,仅根据您发布的数字和代码,可能很难找出发生了什么(而且我不太了解 Ruby)。尝试从服务器获取实际的堆栈跟踪,而不仅仅是通用的 500 HTTP 状态代码。

正如评论中已经发布的那样,浏览器不会关心您回复的正文内容,因此您可以将其留空。

于 2012-11-19T05:51:08.830 回答