我有两段非常相似的代码,一段有效,另一段无效:这个有效:
$(document).ready(function() {
return $("form#myform").live("submit", function() {
var valuesToSubmit;
valuesToSubmit = $(this).serialize();
$.ajax({
url: $(this).attr("action"),
data: valuesToSubmit,
dataType: "JSON",
success: function(json) {
return $("#form-container").html(json["text"]);
},
error: function(json, xy, mycode) {
var msg, response;
response = $.parseJSON(json.responseText);
msg = response.text;
return alert(msg);
}
});
return false;
});
});
而这不是:
$(document).ready(function() {
return $("form#myform").submit(function() {
//same stuff as before
});
});
现在 rails 控制器只用 json 响应,没有 html 响应。我在两者中看到的区别是,两者都可以很好地提交给控制器,但在第一种情况下,请求应该是 json,响应是 json,所以它工作正常。但在第二种情况下,即使我指定'dataType:“JSON”',请求也是html类型,响应是html,我被重定向到表单操作页面,当我按下后退按钮导航到相同页面,我已注销。所以我想知道为什么导航到后台也会让我退出。
那么 $(somthing).submit(function(){}); 有什么区别?和 $(somthing).live('submit', function(){})。他们都发布到操作中,但是一个正在创建一个 html 请求,而另一个正在创建一个 json 请求,一个实际上将我从应用程序中注销,而 otehr 没有?