大佬教程收集整理的这篇文章主要介绍了jquery – 在发送之前放大js解码器和ajax,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
以下是两个例子.
>没有发送.
http://jsfiddle.net/sujesharukil/Td2P4/12/
>使用beforeSend
http://jsfiddle.net/sujesharukil/Td2P4/14/
有人能告诉我发生了什么吗?如果我有一个beforeSend,为什么解码器不会工作?我假设解码器应该在收到请求后触发,所以beforeSend不应该对它产生任何影响!
注意:stackoverflow希望我在这里发布代码,而不仅仅是小提琴
//请检查小提琴
amplify.request({ resourceId: "testRequest",data: { json: JSON.stringify({ text: 'hello world' }) },success: function(data,status) { console.log(data,status); $('.messages').append('<div> text retrieved: ' + data.text + '</div>'); },error: function(status,xhr) { console.log(xhr); } });
救命?
-Suj
在放大这个部分引起了我的注意
beforeSend : function( _xhr,_ajaxSettings ) { xhr = _xhr; ajaxSettings = _ajaxSettings; var ret = defnSettings.beforeSend ? defnSettings.beforeSend.call( this,ampXHR,ajaxSettings ) : true; return ret && amplify.publish( "request.before.ajax",defnSettings,settings,ajaxSettings,ampXHR ); } });
请注意,如果指定了它将调用beforeSend,否则将var var设置为true
如果设置为true,则会发布“request.before.ajax”
在文件中向下,放大侦听此消息
amplify.subscribe( "request.before.ajax",function( resource,ampXHR ) { var _success = ampXHR.success,_error = ampXHR.error,decoder = $.isFunction( resource.decoder ) ? resource.decoder : resource.decoder in amplify.request.decoders ? amplify.request.decoders[ resource.decoder ] : amplify.request.decoders._default; if ( !decoder ) { return; } function success( data,status ) { _success( data,status ); } function error( data,status ) { _error( data,status ); } ampXHR.success = function( data,status ) { decoder( data,status,success,error ); }; ampXHR.error = function( data,error ); };
});
所以,如果你有一个beforeSend,如果它没有返回true,那么该消息永远不会被发布,并且解码器永远不会被击中!
解决方案?
从beforeSend函数返回true
amplify.request.define("testRequest","ajax",{ url: "/echo/json/",dataType: 'json',type: 'POST',decoder: function(data,xhr,error) { console.log('decoder fired'); $('.messages').append('<div>decoder fired </div>'); success(data); },beforeSend: function(xhr){ //not doing anything here,just logging; console.log('before send fired'); $('.messages').append('<div>before send fired </div>'); return true; //this is the key }
});
奇迹般有效!希望这有助于其他人试图解决这个问题!
以上是大佬教程为你收集整理的jquery – 在发送之前放大js解码器和ajax全部内容,希望文章能够帮你解决jquery – 在发送之前放大js解码器和ajax所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。