📄 display.php-n=http.js&f=20-http.js.htm
字号:
} } 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 < 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 & return pairs.join('&');};/** * 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) + "&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 + -