functionPrescript (s) {if(S.cache = = =undefined) {S.cache=false; } if(s.crossdomain) {S.type= "GET"; } } functionPrejsonp (S, originalsettings, jqxhr) {//give the callback function a name varCallbackname =S.jsonpcallback S.url+= (/(?:) /.test (S.url)? "&": "?") + S.jsonp + "=" +Callbackname; //use data converters to retrieve JSON after script execution //provided to the code to obtain the server is the dataS.getdata =function() { if(!Responsecontainer) {Jquery.error (Callbackname+ "is not called"); } returnResponsecontainer[0]; }; //modify the processing mechanismS.datatypes[0] = "JSON"; //Create a global functionoverwritten =Window[callbackname]; //used to collect data from the serverWindow[callbackname] =function() {Responsecontainer=arguments; }; return"Script"; } /** * JSONP pre-processing*/ functionInspectprefiltersortransportsa (Options, Originaloptions, jqxhr) {//pretreatment Jsonp varDatatypeortransport =Prejsonp (Options, Originaloptions, JQXHR)//Expand DatatypesOptions.dataTypes.unshift (Datatypeortransport); //preprocessing script typeprescript (Options)}/** * Dispatcher * @return {[type]} [description]*/ functionINSPECTPREFILTERSORTRANSPORTSB (S, originaloptions, jqxhr) {return{send:function(_, complete) {varScript = JQuery ("<script>"). Prop ({async:true, Charset:s.scriptcharset, Src:s.url}). On ("Load Error", Callback=function(evt) {script.remove (); Callback=NULL; if(evt) {Complete ()}}); //<script async= "" src= "http://192.168.1.113:8080/github/jQuery/jsonp.phpDocument.head.appendChild (script[0]); } } } /** * Analog ajax JSONP Request * @param {[type]} options [description] * @return {[type]} [description] */ functionCreateajax (options) {if(typeofurl = = = "Object") {Options=URL; URL=undefined; } Options= Options | | {}; /** * parameter * jquery.ajaxsetup is the default parameter * @type {[type]}*/ vars =Jquery.ajaxsetup ({}, Options); //deferreds //Asynchronous Mechanism varDeferred =jquery.deferred (); varcompletedeferred = Jquery.callbacks ("Once Memory"); /** * The actual returned Ajax Object * @type {object}*/ varJQXHR = {} //convert JQXHR objects into promise objects and add complete, success, and Error methodsDeferred.promise (JQXHR). Complete =Completedeferred.add; //aliasesJqxhr.success =Jqxhr.done; Jqxhr.error=Jqxhr.fail; S.datatypes= Jquery.trim (S.datatype | | "*"). toLowerCase (). Match (/(?:) /) || [""]; //pretreatmentInspectprefiltersortransportsa (S, options, JQXHR); for(Iinch{success:1, Error:1, Complete:1}) {Jqxhr[i] (s[i]); } /** * Dispenser*/Transport=INSPECTPREFILTERSORTRANSPORTSB (S, options, JQXHR); functionDone (status, Nativestatustext, responses, headers) {Console.log (S,s.getdata ())}//Send RequestTransport.send (S, done); returnjqxhr; } functionShow (data) {$ (' Body '). Append (' <li> ' + data + ' </li> ')); } /** * Data Callback received * @return {[type]} [description]*/ functionFlighthandler () {} $ ("#test"). Click (function(){ //executes an asynchronous HTTP (Ajax) request. varAjax =createajax ({URL:' Http://192.168.1.113:8080/github/jQuery/jsonp.php ', data: {' Action ': ' Aaron ' }, //an array of pre-transmitted parametersDataType: ' Jsonp ',//Data TypeJSONP: ' Callback ',//Specifies the callback function name, consistent with the server-side reception, and returns backJsonpcallback:flighthandler, Success:function() {Show (' Local event Success ') } }) })
Implementation of Analog JSONP