【问题标题】:Can you send JSON through a url?您可以通过 url 发送 JSON 吗?
【发布时间】:2011-10-01 14:33:06
【问题描述】:

我有一个 ruby​​ 哈希,其中键是 url,值是整数。我将哈希转换为 JSON,我想知道是否能够通过 AJAX 请求在 url 中发送 JSON,然后从 params 哈希中提取该 JSON。

另外,我将向客户端发送一个 JSON 化的 ruby​​ 哈希。如果我的 AJAX 函数中有一个成功回调,我在 data 变量中接收数据,如何使用 JQuery 解析该 JSON?

如果我需要更具体,请告诉我。

【问题讨论】:

  • 如果您正在执行 AJAX 请求,为什么不发布它而不是发送 JSON 作为 URL 的一部分...
  • @Endophage 如果我这样做了,那么我将如何从服务器访问 JSON?

标签: jquery ruby-on-rails ruby ajax json


【解决方案1】:

是的,你可以没有问题。无需手动编码/解码!

你的代码应该是这样的:

var jsonParam = '{"name":"Edgar"}'; //Sample json param
$.ajax({
  ...  
  type: "get", //This sends in url
  data: {jsonParam: jsonParam}, //This will encode your json for url automatically
  dataType: "json", //With this the response will be automatically json-decoded!
  success: function(response){ //Assuming your server output was '{"lastName":"Villegas"}' as string
     alert(response.lastName);
  }
});

如您所见,无需手动编码/解码。 Jquery 处理一切!

希望这会有所帮助。干杯

PS:如果出于某种原因,您需要手动为 url 编码/解码 json,请使用 javascript 的 encodeURIComponent(string)$.parseJSON(jsonString) 方法。

【讨论】:

  • 等等,所以通过指定dataType: "json"我不需要在服务器上解析JSON? (例如 JSON.parse(json_here))。另外,如果我决定将其作为 POST 请求发送,我将如何在 ruby​​ 中访问服务器上的 JSON?
【解决方案2】:

是的,您可以将 json 对象作为 get 或 post 参数传递。

为了使用 Jquery 解析 json 字符串,您可以使用 $.parseJSON。

【讨论】:

  • 我的意思是通过网址本身。但是如果我发布它并在data 选项中发送它,我将如何从控制器访问它?
  • 这取决于您的服务器端代码。例如,在 C# 中,您可以使用 Request[elementName],或者在控制器操作中,您可以指定执行操作时将自动填充的确切参数名称。
  • @ShankarSangoli 它会起作用,但是在获取/查询参数中传递 JSON 对象是一个好习惯吗?
  • @Nitin - 为什么不呢?除非您不发送敏感信息。
猜你喜欢
  • 2020-12-28
  • 1970-01-01
  • 2017-06-14
  • 1970-01-01
  • 2011-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-26
相关资源
最近更新 更多