手机
当前位置:查字典教程网 >编程开发 >AJAX相关 >Ajax 核心框架函数及例子
Ajax 核心框架函数及例子
摘要:核心ajax(options)函数中,包含了建立xmlhttprequest,提取数据,判断是否回复成功等,基本满足了日常需求。复制代码代码...

核心ajax(options)函数中,包含了建立xmlhttprequest,提取数据,判断是否回复成功等,基本满足了日常需求。

复制代码 代码如下:

// A generic function for performming AJAX requests

// It takes one argument, which is an object that contains a set of options

// All of which are outline in the comments, below

function ajax( options ) {

// Load the options object with defaults, if no

// values were provided by the user

options = {

// The type of HTTP Request

type: options.type || "POST",

// The URL the request will be made to

url: options.url || "",

// How long to wait before considering the request to be a timeout

timeout: options.timeout || 5000,

// Functions to call when the request fails, succeeds,

// or completes (either fail or succeed)

onComplete: options.onComplete || function(){},

onError: options.onError || function(){},

onSuccess: options.onSuccess || function(){},

// The data type that'll be returned from the server

// the default is simply to determine what data was returned from the

// and act accordingly.

data: options.data || ""

};

// Create the request object

var xml = new XMLHttpRequest();

// Open the asynchronous POST request

//xml.open("GET", "/some/url.cgi", true);

xml.open("GET",options.url, true);

// We're going to wait for a request for 5 seconds, before giving up

var timeoutLength = 5000;

// Keep track of when the request has been succesfully completed

var requestDone = false;

// Initalize a callback which will fire 5 seconds from now, cancelling

// the request (if it has not already occurred).

setTimeout(function(){

requestDone = true;

}, timeoutLength);

// Watch for when the state of the document gets updated

xml.onreadystatechange = function(){

// Wait until the data is fully loaded,

// and make sure that the request hasn't already timed out

if ( xml.readyState == 4 && !requestDone ) {

// Check to see if the request was successful

if ( httpSuccess( xml ) ) {

// Execute the success callback with the data returned from the server

options.onSuccess( httpData( xml, options.type ) );

// Otherwise, an error occurred, so execute the error callback

} else {

options.onError();

}

// Call the completion callback

options.onComplete();

// Clean up after ourselves, to avoid memory leaks

xml = null;

}

};

// Establish the connection to the server

xml.send();

// Determine the success of the HTTP response

function httpSuccess(r) {

try {

// If no server status is provided, and we're actually

// requesting a local file, then it was successful

return !r.status && location.protocol == "file:" ||

// Any status in the 200 range is good

( r.status >= 200 && r.status < 300 ) ||

// Successful if the document has not been modified

r.status == 304 ||

// Safari returns an empty status if the file has not been modified

navigator.userAgent.indexOf("Safari") >= 0 && typeof r.status == "undefined";

} catch(e){}

// If checking the status failed, then assume that the request failed too

return false;

}

// Extract the correct data from the HTTP response

function httpData(r,type) {

// Get the content-type header

var ct = r.getResponseHeader("content-type");

// If no default type was provided, determine if some

// form of XML was returned from the server

var data = !type && ct && ct.indexOf("xml") >= 0;

// Get the XML Document object if XML was returned from

// the server, otherwise return the text contents returned by the server

data = type == "xml" || data ? r.responseXML : r.responseText;

// If the specified type is "script", execute the returned text

// response as if it was JavaScript

if ( type == "script" )

eval.call( window, data );

// Return the response data (either an XML Document or a text string)

return data;

}

}

在同等目录中,我们可以建立一个rss.xml文件,用这个函数来访问。

rss.xml如下:

复制代码 代码如下:

<titles>

<title>

缘份

</title>

<title>

月亮

</title>

<title>

缘份月亮

</title>

</titles>

再建立一个html文档,调用它,就能看到rss.xml中的内容就能被访问到。

整体看看,其实真的比较简洁和简单。不仅是能访问xml格式文件,html,.js格式的文件都可以调用的;

这些都可以在本地建立对应的文件,进行调用,都可以实现。

【Ajax 核心框架函数及例子】相关文章:

基于Ajax技术实现考试倒计时并自动提交试卷

Ajax读取XML实现动态下拉导航

ajax 技术和原理分析

Ajax开始准备入门篇

Ajax注册用户时实现表单验证

Ajax基础教程之封装(三)

Ajax使用JSON数据格式案例

AJAX 验证框架13个

用Ajax读取xml文件的简单例子

Ajax风格的一款网页Loading效果

精品推荐
分类导航