【发布时间】:2012-04-27 07:42:44
【问题描述】:
我正在研究 Ruby-on-Rails。我正在尝试使用 JSON 请求提交表单。
HTML
<%= form_tag widgets_user_path(:format => "json"), :id => "testjsonform" do %>
<input type="checkbox" name="cat[]" value="math" id="sub1" class="left">
<label for="sub1" class="laa">Math</label>
<input type="checkbox" name="cat[]" value="history" id="sub2" class="left">
<label for="sub2" class="laa">History</label>
<input type="checkbox" name="cat[]" value="science" id="sub3" class="left">
<label for="sub3" class="laa">Science</label>
<%= hidden_field_tag 'callback', "?" %>
<div><%= submit_tag 'JSON', :id => "testjson" %></div>
<% end %>
应用程序.js
$("#testjsonform").live("submit", function() {
$.getJSON($(this).attr("action"),$(this).serialize(), function(data) {
alert("success");
})
.success(function() {
alert("success");
})
.error(function() {
alert("error");
});
return false;
});
在控制台上显示请求已完成 (200)
Started GET "/widgets/user.json?utf8=%E2%9C%93&authenticity_token=N8WsL3BATQiv9OWX4d29o62GOQgX9mXdt%2BBiVe%2FtzU%3D&cat%5B%5D=history&callback=%3F" for 127.0.0.1 at 2012-04-27 12:52:35 +0530
Processing by WidgetsController#user as JSON
Parameters: {"utf8"=>"✓", "authenticity_token"=>"N8WsL3BATQiv9OWX4d29o62GOQgX9mXdt+BiVe/tzU=", "cat"=>["history"], "callback"=>"?"}
User Load (0.3ms) SELECT "users".* FROM "users" LIMIT 1
===================================== Categories
Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
在谷歌浏览器中显示正确的 JSONP 响应
?({"user":{"fname":"Test","lname":"User","email":"testuser@testsite.com"}})
一切似乎都是正确的;但它仍然让我在错误块中保持警惕。为什么我没有收到成功警报?什么可能是错的? 任何帮助表示赞赏...
【问题讨论】:
-
尝试警告错误,它作为参数提供给错误处理程序。
-
jQuery 是做 ajax 还是 jsonp 调用?对于第一个,回调参数既不需要也不允许。
-
它正在进行 JSON 调用和回调参数 '?'需要正确格式化控制器中的 JSON 响应。你能帮助我如何打印/检查错误类型吗?
-
有效的 JSON 既不包含问号也不包含大括号。要获取错误对象,请参阅docs。
-
实际上是 JSONP 响应。将进行更正...(参考:stackoverflow.com/a/2887214/707636)
标签: ruby-on-rails json forms getjson