zoukankan      html  css  js  c++  java
  • javascript 与 ajax

    AJAX = Asynchronous JavaScript and XML.

    AJAX is not a new programming language, but a new way to use existing standards.

    AJAX is the art of exchanging data with a server, and updating parts of a web page - without reloading the whole page.http://www.w3schools.com/ajax/ajax_intro.asp

    Ajax involves the use of JavaScript, CSS, the DOM, and (X)HTML. There’s nothing new
    about that. In fact, that pretty accurately describes what DHTML was supposed to be. The
    difference is that Ajax uses asynchronous server-side processing.
    Traditionally, web applications involve lots of page refreshes. The user makes a choice or
    enters data on one page. This information is sent back to the server. The server then sends
    back a new page based on the user’s actions. Even if the user only needed to make a small
    query to the server, a whole new page would need to be served.

    Take the example of a login page. This page would probably have branding, navigation,
    and footer elements as well as the obligatory login form. Every time a user tries to log in,
    a call must be made to the server to check the inputted data against a database. If the
    login is incorrect, the same page is served up again, complete with the same branding,
    the same navigation, and the same footer. The only difference between this page and the
    previous page is the error message informing the user that the attempted login was unsuccessful.
    Despite the fact that only a small portion of the page needed to be updated,
    the entire page was reloaded. Each page load is synchronous with a user request.


    In the Ajax version, only the login portion of the page changes. Everything else—the
    branding, the navigation, and the footer—remains the same. The user fills in the login
    form and presses submit. This time, if the login is unsuccessful, an error message appears
    on the page that is already loaded in the browser.

    The difference between the traditional login page and the Ajax version is that with Ajax,
    the server-side processing occurs asynchronously. Instead of serving up a whole new page
    every time the user sends a request, the server can process requests in the background.
    Perhaps the best description of this difference comes from Derek Powazek, who said that
    the traditional Web is to Ajax as email is to instant messaging.

    There has always been a very clear divide between client-side processing and server-side
    processing. On the client side, which is the browser, JavaScript can manipulate the
    contents of the currently loaded page. If any server-side processing is required, a request
    is sent to a program on the server, written in PHP, ASP, Perl, ColdFusion, or any other
    server-side programming language. Traditionally, the only way for the server to send back
    a response was to serve up a new web page.
    Whenever the client (the web browser) needed something from the server, a request had
    to travel all the way to the server, and a corresponding response had to travel all the way
    from the server back to the client.
    The magic of Ajax is achieved by placing a way station中转站 between the client and the server.
    Using JavaScript, a request is sent from the client to this way station, instead of going all
    the way back to the server. The request is then passed along to the server. The server sends
    a response back to the way station. This response is then passed on to the client where it
    can be processed using JavaScript.
    The way station is the XMLHttpRequest object.

    XMLHttpRequest object  It’s not a standard, but it is very widely supported in modern web browsers.实现是方式不同。

    Microsoft first implemented something called XMLHTTP as one of their proprietary ActiveX objects. Here’s how you would create a new instance of the object in Internet Explorer:
       var waystation = new ActiveXObject("Microsoft.XMLHTTP");

    Other browsers achieve the same result by using XMLHttpRequest:
       var waystation = new XMLHttpRequest();

    In order to satisfy both implementations, you would need to write something like this getHTTPObject function to create an instance of the right object:

    function getHTTPObject(){
        if(window.ActiveXObject){
            var waystation=new ActiveXObject("Microsoft.XMLHTTP");
        }
        else if(window.XMLHttpRequest){
            var waystation=new XMLHttpRequest();
        }
        else{
            var waystation=false;
        }
        return waystation;
    }

    That’s a very simple example. In a real-world situation, you might have to write something
    even more convoluted!回旋

    The getHTTPObject function returns a reference to a new XMLHttpRequest object. You can
    assign this reference to a variable:
       request = getHTTPObject();

    This object has a number of methods, the most useful of which is open. The open method
    is used to point the object at a file on the server. You can also specify what sort of HTTP
    request you want to make: GET, POST, or SEND. A third parameter specifies whether the
    request should be processed asynchronously.
    This will initiate a GET request to a file called example.txt in the same directory as the
    JavaScript file:


      request.open( "GET", "example.txt", true );

    You also need to specify what happens when the XMLHttpResponse object receives a
    response from the server. You can do this by utilizing the onreadystatechange property.
    This is an event handler that is triggered when the server sends a response back to the
    XMLHttpRequest object.
    This will cause a function called doSomething to be executed when onreadystatechange is
    triggered:
       

        request.onreadystatechange = doSomething;

    Once you’ve specified where the object should send a request and what it should do once
    it receives a response, you can start the process using the send method:
    request.send(null);
    The whole process looks like this:

    request = getHTTPObject();
    request.open( "GET", "example.txt", true );
    request.onreadystatechange = doSomething;
    request.send(null);

    You’ll need to write a function called doSomething to handle the response from the server

    When the server sends a response back to the XMLHttpRequest object, a number of properties
    are made available. The readyState property is a numerical value that is updated
    while the server deals with the request. There are five possible values:


    0 uninitialized
    1 loading
    2 loaded
    3 interactive
    4 complete

    Once the readyState property has a value of 4, you have access to the data sent by the server.
    You can access this data as a string of text provided by the responseText property. If the
    data is sent back with a Content-Type header of “text/xml”, you can also access the
    responseXML property, which is effectively a DocumentFragment. You can use all the usual
    DOM methods to manipulate this DocumentFragment. This is where the XML part of
    XMLHttpRequest comes from.
    In this example, the doSomething function waits for a readyState value of 4 and then
    dumps the entire responseText property into an alert dialog:

    function doSomething() {
    if (request.readyState == 4) {
    alert(request.responseText);
    }
    }
    If the example.txt file contains a piece of text saying “Hello world,” then that will appear
    in the alert box.
    That’s a very simple and unimpressive way of using the XMLHttpRequest object, but with a
    little imagination, it can be put to astounding use.

    Hijax
    If the success of Ajax has shown one thing, it’s that having a short, snappy name for something
    helps sell an idea. Just as it’s easier to say Ajax instead of “XMLHttpRequest with DOM
    Scripting, CSS, and (X)HTML,” it’s simpler for me to say Hijax instead of “progressive
    enhancement using Ajax.”
    Ajax relies on the server for its power. A server-side programming language carries out
    most of the real work. The XMLHttpRequest object acts as a gateway between the browser
    and the server, transferring requests and responses. If that gateway is removed, it should
    still be possible to send requests and receive responses. It will just take longer.

  • 相关阅读:
    68、成员列表初始化?
    67、类成员初始化方式?构造函数的执行顺序 ?为什么用成员初始化列表会快一 些?
    64、malloc申请的存储空间能用delete释放吗?
    63、new和delete的实现原理, delete是如何知道释放内存的大小的额?
    62、delete p、delete [] p、allocator都有什么作用?
    60、C++模板是什么,你知道底层怎么实现的?
    nyoj--814--又见拦截导弹(动态规划+贪心)
    hdoj--1950--Bridging signals(二分查找+LIS)
    nyoj--214--单调递增子序列(二)(二分查找+LIS)
    hdoj--1010--Tempter of the Bone(搜索+奇偶剪枝)
  • 原文地址:https://www.cnblogs.com/youxin/p/2660715.html
Copyright © 2011-2022 走看看