JavaScript DHTML/YUI Library/Connection Manager

Материал из Web эксперт
Перейти к: навигация, поиск

Connection Manager GET Transaction

   <source lang="html4strict">

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head>

   <meta http-equiv="content-type" content="text/html; charset=utf-8">

<title>Connection Manager GET Transaction</title> <style type="text/css"> /*margin and padding on body element

 can introduce errors in determining
 element position and are not recommended;
 we turn them off as a foundation for YUI
 CSS treatments. */

body {

 margin:0;
 padding:0;

} </style> <link rel="stylesheet" type="text/css" href="yui_2.7.0b-lib/fonts/fonts-min.css" /> <script type="text/javascript" src="yui_2.7.0b-lib/yahoo/yahoo-min.js"></script> <script type="text/javascript" src="yui_2.7.0b-lib/event/event-min.js"></script> <script type="text/javascript" src="yui_2.7.0b-lib/connection/connection-min.js"></script>


<style>

  1. container li {margin-left:2em;}

</style>


</head> <body class=" yui-skin-sam">

Connection Manager GET Transaction

To create a GET transaction using <a href="http://developer.yahoo.ru/yui/connection/">Connection Manager</a>, you will need to construct a querystring of key-value pairs and append it to the URL. The following code example provides a step-by-step approach to creating a simple GET transaction.

Click "Send a GET Request" below to try it out, then read the description below to learn how to create a simple transaction using Connection Manager.

<script> var div = document.getElementById("container"); var handleSuccess = function(o){

 YAHOO.log("The success handler was called.  tId: " + o.tId + ".", "info", "example");
 
 if(o.responseText !== undefined){
div.innerHTML = "
  • Transaction id: " + o.tId + "
  • "; div.innerHTML += "
  • HTTP status: " + o.status + "
  • "; div.innerHTML += "
  • Status code message: " + o.statusText + "
  • "; div.innerHTML += "
  • HTTP headers:
      " + o.getAllResponseHeaders + "
  • "; div.innerHTML += "
  • Server response: " + o.responseText + "
  • "; div.innerHTML += "
  • Argument object: Object ( [foo] => " + o.argument.foo + " [bar] => " + o.argument.bar +" )
  • ";
     }
    

    } var handleFailure = function(o){

       YAHOO.log("The failure handler was called.  tId: " + o.tId + ".", "info", "example");
     if(o.responseText !== undefined){
    
    div.innerHTML = "
    • Transaction id: " + o.tId + "
    • "; div.innerHTML += "
    • HTTP status: " + o.status + "
    • "; div.innerHTML += "
    • Status code message: " + o.statusText + "
    ";
     }
    

    } var callback = {

     success:handleSuccess,
     failure:handleFailure,
     argument: { foo:"foo", bar:"bar" }
    

    }; var sUrl = "yui_2.7.0b-assets/connection-assets/get.php?username=anonymous&userid=0"; function makeRequest(){

     var request = YAHOO.util.Connect.asyncRequest("GET", sUrl, callback);
     
     YAHOO.log("Initiating request; tId: " + request.tId + ".", "info", "example");
    

    } YAHOO.log("As you interact with this example, relevant steps in the process will be logged here.", "info", "example"); </script> <form><input type="button" value="Send a GET Request" onClick="makeRequest();"></form>

    </body> </html>


     </source>
       
      
    

    <A href="http://www.wbex.ru/Code/JavaScriptDownload/yui_2.7.0b.zip">yui_2.7.0b.zip( 4,431 k)</a>


    Connection Manager POST Transaction

       <source lang="html4strict">
    
    


    <head>

       <meta http-equiv="content-type" content="text/html; charset=utf-8">
    

    <title>Connection Manager POST Transaction</title> <style type="text/css"> /*margin and padding on body element

     can introduce errors in determining
     element position and are not recommended;
     we turn them off as a foundation for YUI
     CSS treatments. */
    

    body {

     margin:0;
     padding:0;
    

    } </style> <link rel="stylesheet" type="text/css" href="yui_2.7.0b-lib/fonts/fonts-min.css" /> <script type="text/javascript" src="yui_2.7.0b-lib/yahoo/yahoo-min.js"></script> <script type="text/javascript" src="yui_2.7.0b-lib/event/event-min.js"></script> <script type="text/javascript" src="yui_2.7.0b-lib/connection/connection-min.js"></script>


    <style>

    1. container li {margin-left:2em;}

    </style>


    </head> <body class=" yui-skin-sam">

    Connection Manager POST Transaction

    To create a POST transaction using <a href="http://developer.yahoo.ru/yui/connection/">Connection Manager</a>, you will need to construct a data string as the POST message. The following code example provides a step-by-step approach to creating a simple POST transaction.

    Click "Send a POST Request" below to try it out, then read the description below to learn how to send POST data to the server using Connection Manager.

    <script> var div = document.getElementById("container"); var handleSuccess = function(o){

     YAHOO.log("The success handler was called.  tId: " + o.tId + ".", "info", "example");
     if(o.responseText !== undefined){
    
    div.innerHTML = "
  • Transaction id: " + o.tId + "
  • "; div.innerHTML += "
  • HTTP status: " + o.status + "
  • "; div.innerHTML += "
  • Status code message: " + o.statusText + "
  • "; div.innerHTML += "
  • HTTP headers received:
      " + o.getAllResponseHeaders + "
  • "; div.innerHTML += "
  • PHP response: " + o.responseText + "
  • "; div.innerHTML += "
  • Argument object: Array ([0] => " + o.argument[0] + " [1] => " + o.argument[1] + " )
  • ";
     }
    

    }; var handleFailure = function(o){

       YAHOO.log("The failure handler was called.  tId: " + o.tId + ".", "info", "example");
     if(o.responseText !== undefined){
    
    div.innerHTML = "
  • Transaction id: " + o.tId + "
  • "; div.innerHTML += "
  • HTTP status: " + o.status + "
  • "; div.innerHTML += "
  • Status code message: " + o.statusText + "
  • ";
     }
    

    }; var callback = {

     success:handleSuccess,
     failure:handleFailure,
     argument:["foo","bar"]
    

    }; var sUrl = "yui_2.7.0b-assets/connection-assets/post.php"; var postData = "username=anonymous&userid=0"; function makeRequest(){

     var request = YAHOO.util.Connect.asyncRequest("POST", sUrl, callback, postData);
     
     YAHOO.log("Initiating request; tId: " + request.tId + ".", "info", "example");
    

    } YAHOO.log("As you interact with this example, relevant steps in the process will be logged here.", "info", "example"); </script> <form><input type="button" value="Send a POST Request" onClick="makeRequest();"></form>

    </body>

     </source>
       
      
    

    <A href="http://www.wbex.ru/Code/JavaScriptDownload/yui_2.7.0b.zip">yui_2.7.0b.zip( 4,431 k)</a>


    Connection Manager Transaction Timeout

       <source lang="html4strict">
    
    


    <html> <head> <title>Connection Manager Transaction Timeout</title> <link rel="stylesheet" type="text/css" href="yui_2.7.0b-lib/fonts/fonts-min.css" /> <script type="text/javascript" src="yui_2.7.0b-lib/yahoo/yahoo-min.js"></script> <script type="text/javascript" src="yui_2.7.0b-lib/event/event-min.js"></script> <script type="text/javascript" src="yui_2.7.0b-lib/connection/connection-min.js"></script> <style>

    1. container li {margin-left:2em;}

    </style> </head> <body class=" yui-skin-sam">

    Connection Manager Transaction Timeout

    <a href="http://developer.yahoo.ru/yui/connection/">Connection Manager</a>"s built-in transaction timeout functionality.

    Click the "Create Two Transactions" button below. Two requests will be made to a PHP script that is designed to respond slowly, waiting between 0 and 10 seconds to respond. If the response takes longer than 1.5 seconds, the request will automatically abort (resulting in a "transaction aborted" message).

    <script> var div = document.getElementById("container"); var handleSuccess = function(o){

     YAHOO.log("The success handler was called; this transaction did not abort.  tId: " + o.tId + ".", "info", "example");
     if(o.responseText !== undefined){
    
    div.innerHTML += "
  • Transaction id: " + o.tId + "
  • "; div.innerHTML += "
  • HTTP status: " + o.status + "
  • "; div.innerHTML += "
  • Status code message: " + o.statusText + "
  • "; div.innerHTML += "
  • HTTP headers:
      " + o.getAllResponseHeaders + "
  • "; div.innerHTML += "
  • Server response: " + o.responseText + "
  • "; div.innerHTML += "
  • Argument object: Object ( [foo] => " + o.argument.foo + " [bar] => " + o.argument.bar +" )

  • ";
     }
    

    } var handleFailure = function(o){

       YAHOO.log("The failure handler was called; this transaction aborted.  tId: " + o.tId + ".", "info", "example");
    
    div.innerHTML += "
  • Transaction id: " + o.tId + "
  • "; div.innerHTML += "
  • HTTP status: " + o.status + "
  • "; div.innerHTML += "
  • Status code message: " + o.statusText + "
  • ";

    } var callback = {

     success: handleSuccess,
     failure: handleFailure,
     argument: { foo:"foo", bar:"bar" },
     timeout: 1500
    

    }; var sUrl = "yui_2.7.0b-assets/connection-assets/sync.php"; function makeRequest(){

     var obj1 = YAHOO.util.Connect.asyncRequest("GET", sUrl, callback);
     YAHOO.log("Initiating request; tId: " + obj1.tId + ".", "info", "example");
     var obj2 = YAHOO.util.Connect.asyncRequest("GET", sUrl, callback);
     YAHOO.log("Initiating request; tId: " + obj2.tId + ".", "info", "example");
    

    } YAHOO.log("As you interact with this example, relevant steps in the process will be logged here.", "info", "example"); </script> <form><input type="button" value="Create Two Transactions" onClick="makeRequest();"></form> </body> </html>

     </source>
       
      
    

    <A href="http://www.wbex.ru/Code/JavaScriptDownload/yui_2.7.0b.zip">yui_2.7.0b.zip( 4,431 k)</a>


    Editor Data Post with Connection Manager

       <source lang="html4strict">
    
    

    <head>

       <meta http-equiv="content-type" content="text/html; charset=utf-8">
    

    <title>Editor Data Post with Connection Manager</title> <style type="text/css"> /*margin and padding on body element

     can introduce errors in determining
     element position and are not recommended;
     we turn them off as a foundation for YUI
     CSS treatments. */
    

    body {

     margin:0;
     padding:0;
    

    } </style> <link rel="stylesheet" type="text/css" href="yui_2.7.0b-lib/menu/assets/skins/sam/menu.css" /> <link rel="stylesheet" type="text/css" href="yui_2.7.0b-lib/button/assets/skins/sam/button.css" /> <link rel="stylesheet" type="text/css" href="yui_2.7.0b-lib/fonts/fonts-min.css" /> <link rel="stylesheet" type="text/css" href="yui_2.7.0b-lib/container/assets/skins/sam/container.css" /> <link rel="stylesheet" type="text/css" href="yui_2.7.0b-lib/editor/assets/skins/sam/editor.css" /> <script type="text/javascript" src="yui_2.7.0b-lib/yahoo-dom-event/yahoo-dom-event.js"></script> <script type="text/javascript" src="yui_2.7.0b-lib/animation/animation-min.js"></script> <script type="text/javascript" src="yui_2.7.0b-lib/connection/connection-min.js"></script> <script type="text/javascript" src="yui_2.7.0b-lib/element/element-min.js"></script> <script type="text/javascript" src="yui_2.7.0b-lib/container/container-min.js"></script> <script type="text/javascript" src="yui_2.7.0b-lib/menu/menu-min.js"></script> <script type="text/javascript" src="yui_2.7.0b-lib/button/button-min.js"></script> <script type="text/javascript" src="yui_2.7.0b-lib/editor/editor-min.js"></script>

    </head> <body class="yui-skin-sam">

    Editor Data Post with Connection Manager

    This example demonstrates how to use <a href="http://developer.yahoo.ru/yui/connection/">Connection Manager</a> to post data to the server, filter it and return it to the Editor.

    <style>

       #submitEditor {
           margin: 1em;
       }
       #status {
           margin: 2em;
           border: 1px solid black;
           background-color: #ccc;
           height: 4em;
       }
    

    </style> <form method="post" action="#" id="form1"> <textarea id="editor" name="editor" rows="20" cols="75"> This is some more test text.
    This is some more test text.
    This is some more test text.
    This is some more test text.
    This is some more test text.
    This is some more test text.
    This is some more test text.
    </textarea> <input type="checkbox" id="filter" checked> <label for="filter">Filter editor data on server.</label>
    <button type="button" id="submitEditor">Submit Form</button>

    </form> <script> (function() {

       var Dom = YAHOO.util.Dom,
           Event = YAHOO.util.Event,
           status = null;
           var handleSuccess = function(o) {
               YAHOO.log("Post success", "info", "example");
               var json = o.responseText.substring(o.responseText.indexOf("{"), o.responseText.lastIndexOf("}") + 1);
               var data = eval("(" + json + ")");
               status.innerHTML = "Status: " + data.Results.status + "
    Filter: " + data.Results.filter + "
    " + (new Date().toString()); myEditor.setEditorHTML(data.Results.data); } var handleFailure = function(o) { YAHOO.log("Post failed", "info", "example"); var json = o.responseText.substring(o.responseText.indexOf("{"), o.responseText.lastIndexOf("}") + 1); var data = eval("(" + json + ")"); status.innerHTML = "Status: " + data.Results.status + "
    "; } var callback = { success: handleSuccess, failure: handleFailure }; YAHOO.log("Create Button Control (#toggleEditor)", "info", "example"); var _button = new YAHOO.widget.Button("submitEditor"); var myConfig = { height: "300px", width: "600px", animate: true, dompath: true }; YAHOO.log("Create the Editor..", "info", "example"); var myEditor = new YAHOO.widget.Editor("editor", myConfig); myEditor.render(); _button.on("click", function(ev) { YAHOO.log("Button clicked, initiate transaction", "info", "example"); Event.stopEvent(ev); myEditor.saveHTML(); window.setTimeout(function() { var sUrl = "yui_2.7.0b-assets/editor-assets/post.php"; var data = "filter=" + ((Dom.get("filter").checked) ? "yes" : "no") + "&editor_data=" + encodeURIComponent(myEditor.get("textarea").value); var request = YAHOO.util.Connect.asyncRequest("POST", sUrl, callback, data); }, 200); });
       Event.onDOMReady(function() {
           status = Dom.get("status");
       });
    

    })(); </script>


    </body>

     </source>
       
      
    

    <A href="http://www.wbex.ru/Code/JavaScriptDownload/yui_2.7.0b.zip">yui_2.7.0b.zip( 4,431 k)</a>


    Subscribing to Connection Manager Global Events

       <source lang="html4strict">
    
    

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head>

       <meta http-equiv="content-type" content="text/html; charset=utf-8">
    

    <title>Subscribing to Connection Manager Global Events</title> <style type="text/css"> /*margin and padding on body element

     can introduce errors in determining
     element position and are not recommended;
     we turn them off as a foundation for YUI
     CSS treatments. */
    

    body {

     margin:0;
     padding:0;
    

    } </style> <link rel="stylesheet" type="text/css" href="yui_2.7.0b-lib/fonts/fonts-min.css" /> <script type="text/javascript" src="yui_2.7.0b-lib/yahoo/yahoo-min.js"></script> <script type="text/javascript" src="yui_2.7.0b-lib/event/event-min.js"></script> <script type="text/javascript" src="yui_2.7.0b-lib/connection/connection-min.js"></script>


    <style>

    1. container {margin-left:2em;}

    </style>

    </head> <body class=" yui-skin-sam">

    Subscribing to Connection Manager Global Events

    <a href="http://developer.yahoo.ru/yui/connection/">Connection Manager</a> exposes <a href="http://developer.yahoo.ru/yui/event/#customevent">Custom Events</a> that track the progress of a transaction through its lifecycle. These Custom Events are raised at the global level and at the transaction level. The following code example provides a step-by-step approach to subscribing to global custom events raised by Connection Manager. In this scenario, an event handler object is created to handle all Custom Events. Each Custom Event is explicitly subscribed with a reference to it"s event handler.

    Click "Send a Request" below to try it out, then read the description below to learn how to subscribe to global Custom Events in Connection Manager.

    <form> <input type="button" onclick="makeRequest();" value="Send a Request"> </form>

    <script> var div = document.getElementById("container"); var globalEvents = {

     start:function(type, args){
       YAHOO.log("Custom Event *start* fired for transaction" + args[0].tId + ".", "info", "example");
    
    div.innerHTML = "
  • Transaction " + args[0].tId + " " + type + " fired.
  • ";
     },
     complete:function(type, args){
       YAHOO.log("Custom Event *complete* fired for transaction" + args[0].tId + ".", "info", "example");
    
    div.innerHTML += "
  • Transaction " + args[0].tId + " " + type + " fired.
  • ";
     },
     success:function(type, args){
       YAHOO.log("Custom Event *success* fired for transaction" + args[0].tId + ".", "info", "example");
    
    div.innerHTML += "
  • Transaction " + args[0].tId + " " + type + " fired.
  • ";
       if(args[0].responseText !== undefined){
    
    div.innerHTML += "
  • Transaction id: " + args[0].tId + "
  • "; div.innerHTML += "
  • HTTP status: " + args[0].status + "
  • "; div.innerHTML += "
  • Status code message: " + args[0].statusText + "
  • "; div.innerHTML += "
  • HTTP headers: " + args[0].getAllResponseHeaders + "
  • "; div.innerHTML += "
  • Server response: " + args[0].responseText + "
  • "; div.innerHTML += "
  • Argument object: Array ( [foo] => " + args[0].argument[0] +" [bar] => " + args[0].argument[1] +" )
  • ";
         }
     },
     failure:function(type, args){
       YAHOO.log("Custom Event *failure* fired for transaction" + args[0].tId + ".", "info", "example");
    
    div.innerHTML += "
  • Transaction " + args[0].tId + " " + type + " fired.
  • ";
       if(args[0].responseText !== undefined){
    
    div.innerHTML += "
  • Transaction id: " + args[0].tId + "
  • "; div.innerHTML += "
  • HTTP status: " + args[0].status + "
  • "; div.innerHTML += "
  • Status code message: " + args[0].statusText + "
  • ";
       }
     },
     abort:function(type, args){
       YAHOO.log("Custom Event *abort* fired for transaction" + args[0].tId + ".", "info", "example");
    
    div.innerHTML += "
  • Transaction " + args[0].tId + " " + type + " fired.
  • ";
     }
    

    }; YAHOO.util.Connect.startEvent.subscribe(globalEvents.start); YAHOO.util.Connect.rupleteEvent.subscribe(globalEvents.ruplete); YAHOO.util.Connect.successEvent.subscribe(globalEvents.success); YAHOO.util.Connect.failureEvent.subscribe(globalEvents.failure); YAHOO.util.Connect.abortEvent.subscribe(globalEvents.abort); var callback = { argument:["foo","bar"] }; function makeRequest(){

     var sUrl = "yui_2.7.0b-assets/connection-assets/get.php?s=hello%20world";
     var request = YAHOO.util.Connect.asyncRequest("GET", sUrl, callback);
    

    } </script>

    </body> </html>


     </source>
       
      
    

    <A href="http://www.wbex.ru/Code/JavaScriptDownload/yui_2.7.0b.zip">yui_2.7.0b.zip( 4,431 k)</a>


    Subscribing to Connection Manager"s Custom Events via the Callback Object

       <source lang="html4strict">
    
    


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head>

       <meta http-equiv="content-type" content="text/html; charset=utf-8">
    

    <title>Subscribing to Connection Manager"s Custom Events via the Callback Object</title> <style type="text/css"> /*margin and padding on body element

     can introduce errors in determining
     element position and are not recommended;
     we turn them off as a foundation for YUI
     CSS treatments. */
    

    body {

     margin:0;
     padding:0;
    

    } </style> <link rel="stylesheet" type="text/css" href="yui_2.7.0b-lib/fonts/fonts-min.css" /> <script type="text/javascript" src="yui_2.7.0b-lib/yahoo/yahoo-min.js"></script> <script type="text/javascript" src="yui_2.7.0b-lib/event/event-min.js"></script> <script type="text/javascript" src="yui_2.7.0b-lib/connection/connection-min.js"></script>


    <style>

    1. container {margin-left:2em;}

    </style>

    </head> <body class=" yui-skin-sam">

    Subscribing to Connection Manager"s Custom Events via the Callback Object

    <a href="http://developer.yahoo.ru/yui/connection/">Connection Manager</a> exposes <a href="http://developer.yahoo.ru/yui/event/#customevent">Custom Events</a> that track the progress of a transaction throughout its lifecycle. These Custom Events are raised at the global level and at the transaction level. The following code example provides a step-by-step approach to subscribing to transactional Custom Events raised by Connection Manager. In this scenario, an event handler object is created to handle all of the Custom Events; this event handler object is passed to Connection Manager in the callback object. Connection Manager will automatically subscribe to the events and fire the specified events.

    Click "Send a Request" below to try it out, then read the description below to learn how to subscribe to transactional Custom Events in Connection Manager.

    <form> <input type="button" onclick="makeRequest();" value="Send a Request"> </form>

    <script> var div = document.getElementById("container"); var transactionObject = {

     start:function(type, args){
       YAHOO.log("Custom Event *start* fired for transaction" + args[0].tId + ".", "info", "example");
    
    div.innerHTML = "
  • Transaction " + args[0].tId + " " + type + " event fired.
  • ";
     },
     complete:function(type, args){
       YAHOO.log("Custom Event *complete* fired for transaction" + args[0].tId + ".", "info", "example");
    
    div.innerHTML += "
  • Transaction " + args[0].tId + " " + type + " event fired.
  • ";
     },
     success:function(type, args){
       YAHOO.log("Custom Event *success* fired for transaction" + args[0].tId + ".", "info", "example");
    
    div.innerHTML += "
  • Transaction " + args[0].tId + " " + type + " event fired.
  • ";
       if(args[0].responseText !== undefined){
    
    div.innerHTML += "
  • Transaction id: " + args[0].tId + "
  • "; div.innerHTML += "
  • HTTP status: " + args[0].status + "
  • "; div.innerHTML += "
  • Status code message: " + args[0].statusText + "
  • "; div.innerHTML += "
  • HTTP headers: " + args[0].getAllResponseHeaders + "
  • "; div.innerHTML += "
  • Server response: " + args[0].responseText + "
  • "; div.innerHTML += "
  • Argument object: Array ( [foo] => " + args[0].argument[0] +" [bar] => " + args[0].argument[1] +" )
  • ";
         }
     },
     failure:function(type, args){
       YAHOO.log("Custom Event *failure* fired for transaction" + args[0].tId + ".", "info", "example");
    
    div.innerHTML += "
  • Transaction " + args[0].tId + " " + type + " event fired.
  • ";
       if(args[0].responseText !== undefined){
    
    div.innerHTML += "
  • Transaction id: " + args[0].tId + "
  • "; div.innerHTML += "
  • HTTP status: " + args[0].status + "
  • "; div.innerHTML += "
  • Status code message: " + args[0].statusText + "
  • ";
       }
     },
     abort:function(type, args){
       YAHOO.log("Custom Event *abort* fired for transaction" + args[0].tId + ".", "info", "example");
    
    div.innerHTML += "
  • Transaction " + args[0].tId + " " + type + " event fired.
  • ";
     }
    

    }; var handleSuccess = function(o){

    div.innerHTML += "
  • Success response handler triggered in callback.success
  • ";

    }; var handleFailure = function(o){

    div.innerHTML += "
  • Failure response handler triggered in callback.success
  • ";

    }; var callback = {

     success:handleSuccess,
     failure:handleFailure,
     customevents:{
       onStart:transactionObject.start,
       onComplete:transactionObject.ruplete,
       onSuccess:transactionObject.success,
       onFailure:transactionObject.failure,
       onAbort:transactionObject.abort
     },
      argument:["foo","bar"]
    

    }; function makeRequest(){

     var sUrl = "yui_2.7.0b-assets/connection-assets/get.php?s=hello%20world";
     var request = YAHOO.util.Connect.asyncRequest("GET", sUrl, callback);
    

    }; </script>

    </body> </html>


     </source>
       
      
    

    <A href="http://www.wbex.ru/Code/JavaScriptDownload/yui_2.7.0b.zip">yui_2.7.0b.zip( 4,431 k)</a>