⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 display.php-n=http.js&f=20-http.js.htm

📁 javascript 5 随书源码 javascript
💻 HTM
📖 第 1 页 / 共 2 页
字号:
        }    }    request.open("HEAD", url);    request.send(null);};/** * Parse the response headers from an XMLHttpRequest object and return * the header names and values as property names and values of a new object. */HTTP.parseHeaders = function(request) {    var headerText = request.getAllResponseHeaders();  // Text from the server    var headers = {}; // This will be our return value    var ls = /^\s*/;  // Leading space regular expression    var ts = /\s*$/;  // Trailing space regular expression    // Break the headers into lines    var lines = headerText.split("\n");    // Loop through the lines    for(var i = 0; i &lt; lines.length; i++) {        var line = lines[i];        if (line.length == 0) continue;  // Skip empty lines        // Split each line at first colon, and trim whitespace away        var pos = line.indexOf(':');             var name = line.substring(0, pos).replace(ls, "").replace(ts, "");        var value = line.substring(pos+1).replace(ls, "").replace(ts, "");        // Store the header name/value pair in a JavaScript object        headers[name] = value;    }    return headers;};/** * Send an HTTP POST request to the specified URL, using the names and values * of the properties of the values object as the body of the request. * Parse the server's response according to its content type and pass * the resulting value to the callback function.  If an HTTP error occurs, * call the specified errorHandler function, or pass null to the callback * if no error handler is specified. **/HTTP.post = function(url, values, callback, errorHandler) {    var request = HTTP.newRequest();    request.onreadystatechange = function() {        if (request.readyState == 4) {            if (request.status == 200) {                callback(HTTP._getResponse(request));            }            else {                if (errorHandler) errorHandler(request.status,                                               request.statusText);                else callback(null);            }        }    }    request.open("POST", url);    // This header tells the server how to interpret the body of the request    request.setRequestHeader("Content-Type",                             "application/x-www-form-urlencoded");    // Encode the properties of the values object and send them as    // the body of the request.    request.send(HTTP.encodeFormData(values));};/** * Encode the property name/value pairs of an object as if they were from * an HTML form, using application/x-www-form-urlencoded format */HTTP.encodeFormData = function(data) {    var pairs = [];    var regexp = /%20/g; // A regular expression to match an encoded space    for(var name in data) {        var value = data[name].toString();        // Create a name/value pair, but encode name and value first        // The global function encodeURIComponent does almost what we want,        // but it encodes spaces as %20 instead of as "+". We have to        // fix that with String.replace()        var pair = encodeURIComponent(name).replace(regexp,"+") + '=' +            encodeURIComponent(value).replace(regexp,"+");        pairs.push(pair);    }    // Concatenate all the name/value pairs, separating them with &amp;    return pairs.join('&amp;');};/** * Parse an HTTP response based on its Content-Type header * and return the parsed object */HTTP._getResponse = function(request) {    // Check the content type returned by the server    switch(request.getResponseHeader("Content-Type")) {    case "text/xml":        // If it is an XML document, use the parsed Document object        return request.responseXML;    case "text/json":    case "application/json":     case "text/javascript":    case "application/javascript":    case "application/x-javascript":        // If the response is JavaScript code, or a JSON-encoded value,        // call eval() on the text to "parse" it to a JavaScript value.        // Note: only do this if the JavaScript code is from a trusted server!        return eval(request.responseText);    default:        // Otherwise, treat the response as plain text and return as a string        return request.responseText;    }};/** * Send an HTTP GET request for the specified URL.  If a successful * response is received, it is converted to an object based on the * Content-Type header and passed to the specified callback function. * Additional arguments may be specified as properties of the options object. * * If an error response is received (e.g., a 404 Not Found error), * the status code and message are passed to the options.errorHandler * function.  If no error handler is specified, the callback * function is called instead with a null argument. *  * If the options.parameters object is specified, its properties are * taken as the names and values of request parameters.  They are * converted to a URL-encoded string with HTTP.encodeFormData() and * are appended to the URL following a '?'. *  * If an options.progressHandler function is specified, it is * called each time the readyState property is set to some value less * than 4.  Each call to the progress handler function is passed an * integer that specifies how many times it has been called. * * If an options.timeout value is specified, the XMLHttpRequest * is aborted if it has not completed before the specified number * of milliseconds have elapsed.  If the timeout elapses and an * options.timeoutHandler is specified, that function is called with * the requested URL as its argument. **/HTTP.get = function(url, callback, options) {    var request = HTTP.newRequest();    var n = 0;    var timer;    if (options.timeout)        timer = setTimeout(function() {                               request.abort();                               if (options.timeoutHandler)                                   options.timeoutHandler(url);                           },                           options.timeout);    request.onreadystatechange = function() {        if (request.readyState == 4) {            if (timer) clearTimeout(timer);            if (request.status == 200) {                callback(HTTP._getResponse(request));            }            else {                if (options.errorHandler)                    options.errorHandler(request.status,                                         request.statusText);                else callback(null);            }        }        else if (options.progressHandler) {            options.progressHandler(++n);        }    }    var target = url;    if (options.parameters)        target += "?" + HTTP.encodeFormData(options.parameters)    request.open("GET", target);    request.send(null);};HTTP.getTextWithScript = function(url, callback) {    // Create a new script element and add it to the document    var script = document.createElement("script");    document.body.appendChild(script);    // Get a unique function name    var funcname = "func" + HTTP.getTextWithScript.counter++;    // Define a function with that name, using this function as a    // convenient namespace.  The script generated on the server    // invokes this function    HTTP.getTextWithScript[funcname] = function(text) {        // Pass the text to the callback function        callback(text);        // Clean up the script tag and the generated function        document.body.removeChild(script);        delete HTTP.getTextWithScript[funcname];    }    // Encode the URL we want to fetch and the name of the function    // as arguments to the jsquoter.php server-side script.  Set the src    // property of the script tag to fetch the URL    script.src = "jsquoter.php" +                 "?url=" + encodeURIComponent(url) + "&amp;func=" +                 encodeURIComponent("HTTP.getTextWithScript." + funcname);}// We use this to generate unique function callback names in case there// is more than one request pending at a time.HTTP.getTextWithScript.counter = 0;</pre><div class="lefttitle" style="padding:0px; text-align: right"><a href="index.html" tppabs="http://www.davidflanagan.com/javascript5/index.html">Table of Examples</a></div><p><script type="text/javascript">amazon_ad_tag="davidflanagancom"; amazon_ad_width="300"; amazon_ad_height="250"; amazon_ad_logo="hide";</script><script type="text/javascript" src="../../www.assoc-amazon.com/s/ads.js" tppabs="http://www.assoc-amazon.com/s/ads.js"></script></div></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -