Bug Tracker

Ticket #916: jquery.diff

File jquery.diff, 4.5 KB (added by anonymous, 8 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}