如何解决如何在Rails中将数据追加到jquery-ujs发布请求?
| 我有一个带有data-remote=\"true\"
属性的Ajax表单,我正在将该表单提交给Rails中的控制器。
我想做的是使用jquery-ujs事件系统在请求发送到服务器之前将数据附加到请求。
像这样:
$(\"#my_form\").bind(\'ajax:beforeSend\',function(xhr,settings){
// serialize some object and append it
});
我不知道如何在数据上进行实际标记?
编辑这就是\'xhr \'对象在控制台中的外观。
f.Event
currentTarget: DOMWindow
data: undefined
exclusive: undefined
handleObj: Object
handler: function N(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,\"events\");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type===\"click\")){a.namespace&&(n=new RegExp(\"(^|\\\\.)\"+a.namespace.split(\".\").join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(y,\"\")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType===\"mouseenter\"||g.preType===\"mouseleave\")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}
jQuery16103879226385615766: true
liveFired: HTMLDocument
namespace: \"\"
namespace_re: /(^|\\.)(\\.|$)/
result: undefined
target: HTMLFormElement
timeStamp: 1306788242911
type: \"ajax:beforeSend\"
__proto__: Object
解决方法
最后我自己弄清楚了这个。看来,尽管文档说了什么,“ 3”钩实际上需要三个参数。根据这篇有用的博客文章,它们依次为
event
,xhr
和settings
。
我要查找的表单数据位于settings
参数的data
属性中。
所以基本上,我现在可以使用函数将数据添加到请求中
$(\"#my_form\").bind(\'ajax:beforeSend\',function(event,xhr,settings){
settings.data += \"&serialized=data\";
});
并且额外的参数将在服务器上可用。
, 从jQuery 1.5开始,有一个本地的beforeSend回调可以绑定到您的请求。文档链接和另一个文档链接
编辑:请求数据在jqXHR对象中,第一个参数beforeSend回调中可用。
beforeSend(jqXHR,settings)
尝试检查Firebug中的jqXHR对象,以查看其存储POST数据的确切位置,然后附加值,
, 要在beforeSend
方法(Jquery本机方法)内更改data
属性(至少现在使用Jquery 1.7.2),您只需更改this.data
变量即可。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。