以前,在Rails 2.3.8中,我使用了原型帮助器link_to_remote
和form_remote_for
(以及其他)。
这些选项:update
如下:
link_to_remote "Add to cart",
:url => { :action => "add", :id => product.id },
:update => { :success => "cart", :failure => "error" }
(来自文档的示例)。此示例将在成功后用类“
cart”更新html元素,而在失败时将类“ error”更新。
现在我相信操作方式已经改变,我们写:
link_to "Add to cart", :url => {:action => "add", :id => product.id},
:remote => true
并且没有设置选项:update
了。现在,代替普通的html,我们渲染javascript,如下所示(在jquery中):
$('.cart').replaceWith(<%= escape_javascript(render :partial => 'cart') %>)
但是您如何处理错误情况?我可以在控制器中处理它,并使用单独的视图吗?
以某种方式模仿我们以前的行为对我来说似乎很有用。有任何想法吗?
哈!我发现它在描述这个文章。在rails.js中,检查了以下回调:
由于javascript的语言不容干扰,因此在HTML中不会进行这种耦合。
一个示例(来自同一站点):以下Rails 2.3.8
<% form_remote_tag :url => { :action => 'run' },
:id => "tool-form",
:update => { :success => "response", :failure => "error" },
:loading => "$('#loading').toggle()", :complete => "$('#loading').toggle()" %>
被翻译成这样:
<% form_tag url_for(:action => "run"), :id => "tool-form", :remote => true do %>
然后在一些javascript(application.js)中,将事件绑定
jQuery(function($) {
// create a convenient toggleLoading function
var toggleLoading = function() { $("#loading").toggle() };
$("#tool-form")
.bind("ajax:loading", toggleLoading)
.bind("ajax:complete", toggleLoading)
.bind("ajax:success", function(xhr, data, status) {
$("#response").html(status);
});
});
大!:)
[更新:2011年12月29日]
最近有两个事件被重命名:
ajax:beforeSend
:更换后期 ajax:loading
ajax:error
替换ajax:failure
(我想更符合jQuery本身)因此,我的示例将变为:
$("#tool-form")
.bind("ajax:beforeSend", toggleLoading)
.bind("ajax:complete", toggleLoading)
.bind("ajax:success", function(xhr, data, status) {
$("#response").html(status);
});
为了完整起见,事件及其预期参数:
.bind('ajax:beforeSend', function(xhr, settings) {})
.bind('ajax:success', function(xhr, data, status) {})
.bind('ajax:complete', function(xhr, status) {})
.bind('ajax:error', function(xhr, data, status) {})
问题内容: 我正在尝试构建一个发出ajax请求的Google Chrome扩展程序。与GMail Checker扩展程序类似。问题是,当我使用jquery进行请求时,并输入了错误的用户名/密码时,它会静默失败,并忽略错误回调函数。 如果我将ajax调用从background.html脚本(在开发人员窗口中看不到请求)中移出到options.html脚本中,则会得到一个对话框来重新进行身份验证。如果
本文向大家介绍Jquery Ajax xmlhttp请求成功问题,包括了Jquery Ajax xmlhttp请求成功问题的使用技巧和注意事项,需要的朋友参考一下 今天遇到了一个极其奇怪的问题,用各种工具检查都能看到服务器端返回了200,数据也是正常的,但是$.ajax 始终进不到success,郁闷啊,在网上找, 常见问题场景: 1.跨域; 2. $.ajax 没设置 dataType,及服务器
问题内容: 我想每次发送ajax请求时显示一个“正在加载”进度栏。是否有可能在任何时候使用jQuery发送ajax请求时收到通知? 问题答案: 您可以使用该方法来设置将应用于整个页面的全局AJAX属性:
问题内容: 我需要通过Ajax向远程域发出POST请求,我知道Same-Origin Policy的限制,但我读过,有可能在服务器上的PHP中建立网桥以转发请求。 事实是我不知道如何编写此桥,也无法在Google上找到信息。 我想我需要使用CURL。 有人可以解释一下我怎么写吗? 问题答案: 如果需要代理服务器或“ Bridge ”,则可以尝试以下操作:您可以实现对该PHP脚本的简单AJAX调用,
问题内容: IE中的以下AJAX调用失败。 错误函数返回 没有向服务器发出请求,因此我认为JSON没有问题。 已修复,请参阅#1351389 问题答案: 固定,我将content-type从更改为just plain 。 我讨厌IE :) 另外,为了避免IE超级缓存,请尝试以下操作: 这样,每个请求都是IE获得:D的新网址
我用JQuery 2.0.3这样做http post: json在服务器上发布和编写,但是响应和在AFAIK中没有启用。接收json数据的控制器代码为 我如何还能使成功和失败得到发布的json成功接收或提交失败的回调?它可以提交数据,但是来自服务器的响应不做任何事情,这与控制器方法没有区别,只是用语句写入数据。您是否可以建议一个改进,以便发布数据的javascript也接收响应,我认为如果服务器出