Bug Tracker

Ticket #916: jquery.diff

File jquery.diff, 4.5 KB (added by anonymous, 9 years ago)

patch file

  • .js

    old new  
    77 * Dual licensed under the MIT (MIT-LICENSE.txt)
    88 * and GPL (GPL-LICENSE.txt) licenses.
    99 *
    10  * $Date: 2007-01-22 00:27:54 -0500 (Mon, 22 Jan 2007) $
     10 * $Date: 2007/02/02 19:06:52 $
    1111 * $Rev: 1153 $
    1212 */
    1313
     
    18571857                        data: params,
    18581858                        ifModified: ifModified,
    18591859                        complete: function(res, status){
    1860                                 if ( status == "success" || !ifModified && status == "notmodified" )
     1860                                if ( status.split(" ")[0] != "error" || !ifModified && status == "notmodified" ) {
    18611861                                        // Inject the HTML into all the matched elements
    1862                                         self.attr("innerHTML", res.responseText)
     1862                                        self.attr("innerHTML", res.responseText);
    18631863                                          // Execute all the scripts inside of the newly-injected HTML
    1864                                           .evalScripts()
     1864                                        //if(jQuery.browser.msie)
     1865                                            jQuery.evalInlineScripts(res.responseText);
     1866                                        //else
     1867                                        //    self.evalScripts();
    18651868                                          // Execute callback
    1866                                           .each( callback, [res.responseText, status, res] );
    1867                                 else
     1869                                        self.each( callback, [res.responseText, status, res] );
     1870                                } else
    18681871                                        callback.apply( self, [res.responseText, status, res] );
    18691872                        }
    18701873                });
     
    20162019                                requestDone = true;
    20172020                                var status;
    20182021                                try {
    2019                                         status = jQuery.httpSuccess( xml ) && isTimeout != "timeout" ?
    2020                                                 s.ifModified && jQuery.httpNotModified( xml, s.url ) ? "notmodified" : "success" : "error";
     2022                                        status = jQuery.httpSuccess( xml );
     2023                                        if(status.split(" ")[0] != "error" &&
     2024                                           isTimeout != "timeout" &&
     2025                                           s.ifModified &&
     2026                                           jQuery.httpNotModified( xml, s.url )) {
     2027                                            status = "redirect 304";
     2028                                        }
    20212029                                        // Make sure that the request was successful or notmodified
    2022                                         if ( status != "error" ) {
     2030                                        if ( status.split(" ")[0] != "error" ) {
    20232031                                                // Cache Last-Modified header, if ifModified mode.
    20242032                                                var modRes;
    20252033                                                try {
     
    20422050                                        } else
    20432051                                                jQuery.handleError(s, xml, status);
    20442052                                } catch(e) {
    2045                                         status = "error";
     2053                                        status = "error exception";
    20462054                                        jQuery.handleError(s, xml, status, e);
    20472055                                }
    20482056
     
    21022110
    21032111                // Fire the global callback
    21042112                if ( s.global )
    2105                         jQuery.event.trigger( "ajaxError", [xml, s, e] );
     2113                        jQuery.event.trigger( "ajaxError", [xml, s, e, status] );
    21062114        },
    21072115
    21082116        // Counter for holding the number of active queries
     
    21102118
    21112119        // Determines if an XMLHttpRequest was successful or not
    21122120        httpSuccess: function( r ) {
     2121            var status;
    21132122                try {
    2114                         return !r.status && location.protocol == "file:" ||
    2115                                 ( r.status >= 200 && r.status < 300 ) || r.status == 304 ||
    2116                                 jQuery.browser.safari && r.status == undefined;
    2117                 } catch(e){}
    2118                 return false;
     2123                    var status_code = r.status;
     2124                    status = "error unknow";
     2125                    if(!r.status && location.protocol == "file:" ||
     2126                       jQuery.browser.safari && r.status == undefined) {
     2127                        status = "success"
     2128                    } else if(status_code >= 600) {
     2129                        if(status_code == 12029 || status_code == 12152) {
     2130                            status = "error connection";
     2131                        } else if(status_code == 1223) {
     2132                            status = "success 204";
     2133                        }
     2134                    } else if(status_code >= 200 && status_code < 300) {
     2135                        status = "success " + status_code;
     2136                    } else if(status_code >= 300 && status_code < 400) {
     2137                        status = "redirect " + status_code;
     2138                    } else if(status_code >= 400 && status_code < 600) {
     2139                        status = "error " + status_code;
     2140                    }
     2141                } catch(e){
     2142                    status = "error connection";
     2143                }
     2144                return status;
    21192145        },
    21202146
    21212147        // Determines if an XMLHttpRequest returns NotModified
     
    21952221                        window.setTimeout( data, 0 );
    21962222                else
    21972223                        eval.call( window, data );
    2198         }
    2199 
     2224        },
     2225   
     2226        evalInlineScripts: function(data) {
     2227            var frags = [];
     2228           
     2229            while((sts = data.search(/<[ ]*script(>|[^>]*>)/ig)) >= 0) {
     2230                data = data.substring(sts);
     2231                var sub = data.substring(0, data.search(">"));
     2232                var url, i;
     2233               
     2234                if(sub.search(/src=/i) >= 0) {
     2235                    url = sub.replace(/.*[\n\t\r ]src=("[^"]+"|'[^']+').*/i, "$1"); // ");
     2236                    src = src.substring(1, src.length - 1);
     2237                    url = data.substring(7);
     2238                    jQuery.getScript(url);
     2239                } else {
     2240                    var i;
     2241                    if(data.search(/<[ ]*script(>|[^>]*>)[\n\t\r ]*<!--/i) != 0) {
     2242                        data = data.substring(data.search(">") + 1);
     2243                        i = data.search(/<\/[ ]*script[ ]*>/i);
     2244                    } else {
     2245                        data = data.substring(data.search("<!--") + 4);
     2246                        i = data.search("-->");
     2247                    }
     2248                    jQuery.globalEval(data.substring(0, i));
     2249                    data = data.substring(i);
     2250                }
     2251            }
     2252        }
     2253   
    22002254});
    22012255}