рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХреИрд╕реЗ рдХрдо рдХрд░реЗрдВ? рдФрд░ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╛рдЗрд▓ рдЕрдкрд▓реЛрдб

рддреЛ рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рд╣рд░ рдХреЛрдИ рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЖрдк рд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХреИрд╕реЗ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
jquery.async.js

рддреБрд░рдВрдд рдПрдХ рдЙрджрд╛рд╣рд░рдг:
<form action="/" jasync> <input type="submit" /> </form> 
рдкреНрд░рдкрддреНрд░ рдХреЛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рд╕рдмрдорд┐рдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

 <input type="file" href="/" multiple jasync /> <div type="file" href="/" multiple jasync> </div> <div href="/" jasync dropfile>      </div> 
рдлрд╛рдЗрд▓реЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рднрд░реА рд╣реБрдИ рд╣реИрдВ

 <a href="/" jasync data="year=2013&month=5" class="send"> </a> 
рдбреЗрдЯрд╛ рдХреЛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдФрд░ рдпрд╣рд╛рдВ, рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рд╢рд╛рдпрдж рдПрдХ рд╕рд╡рд╛рд▓ рд╣реИ рдХрд┐ рдкреНрд░рд╛рдкреНрдд рдЖрдВрдХрдбрд╝реЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдпрджрд┐ рдлреЙрд░реНрдо рд╡реИрдз рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХреНрдпреЛрдВ рднреЗрдЬреЗрдВ, рдФрд░ рдпрджрд┐ рдореИрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ?

рдФрд░ рдЖрдЗрдП рдЗрд╕ рдкреНрд░рд╢реНрди рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдХрд┐ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП
 $( '.send' ).bind( 'jasync.success', function( e, data ) { // data -   } ); 

рдЦреИрд░, рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рдХреЛ рдХрдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдЙрдкрдпреЛрдЧреАред

рдФрд░ рдпрд╣рд╛рдВ jquery.message.async.js рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдЧреА, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рд╕реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ jasync = "рд╕рдВрджреЗрд╢" рд╡рд┐рд╢реЗрд╖рддрд╛
 <form action="/" jasync="message"> <input type="submit" /> </form> 

рднреЗрдЬреЗ рдЧрдП рдбреЗрдЯрд╛ рдХрд╛ рдЙрджрд╛рд╣рд░рдг:
 { messages: { { type: 'replace', elem: '#myElem', html: '  ' }, { type: 'append', elem: '.myClass', html: ' ' }, { type: 'delete', elem: '.delElems' }, { callback: 'alert', callback_params: [ '' ] }, { type: 'openPopap', //   jquery.message.ajax.js   ,       html: '...' } } } 

рдпрд╛

 { url: '   ' } 

рдФрд░ рдЗрд╕рд▓рд┐рдП рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣рдо рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рдо рд╕рдмрдорд┐рд╢рди рдХреЛ рд░рджреНрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдлреЙрд░реНрдо рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ:
 $( 'form' ).bind( 'jasync.beforeSend', function( ) { var form = $( this ); if( !form.isValid() ) { form.jasync( 'stop', true ); //  } //           form.jasync( { 'addData': { count: 20, typesend: 'send jasync' }, 'dataType': 'json' //    } ); } ); 

Php рдХреЛрдб рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
 header( 'Content-type: text/json' ); echo json_encode( array( 'messages' => array( array( 'type' => 'replace', 'elem' => '#myElem', 'html' => '  ' ), array( 'type' => 'append', 'elem' => '.myClass', 'html' => ' ' ), array( 'type' => 'delete', 'elem' => '.delElems' ), array( 'callback' => 'alert', 'callback_params' => array('') ) ) ) ); 

рдЖрдЗрдП рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд░реНрдЧ AsyncResponse рд▓рд┐рдЦреЗрдВрдЧреЗ
 $message = AsyncResponse::getInstance(); $message ->add( AsyncResponse::REPLACE, '#myElem', '  ' ) ->add( AsyncResponse::APPEND, '.myClass', ' ' ) ->add( AsyncResponse::DELETE, '.delElems' ) ->addCallback( 'console.log', '', '!!!' ); //->openPopup( '' ) $message->end(); 


рдЬрдм рдЖрдкрдХрд╛ рдбреЗрдЯрд╛ рдПрдХ iframe рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ, рдпрд╣ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ:

  1. рдЬрдм рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВред
    рдЪреВрдВрдХрд┐, рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рд╣рдо iframe рдореЗрдВ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рдЕрдиреНрдп рдбреЛрдореЗрди рд╕реЗ рдбреЗрдЯрд╛ рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ,
    рдЬрдм рдЖрдк рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдбреЛрдореЗрди рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЛрддреА рд╣реИред
  2. рдЬрдм рдЖрдк рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдЫрд╡рд┐рдпрд╛рдВ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ FormData рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ
    рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, iframe рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬрддреЗ рд╕рдордп, рдпрджрд┐ рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЯреИрдЧ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, div),
    рдпрджрд┐ рдЖрдкрдХреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рддреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдорд╛рдкрди рдЯреИрдЧ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ рдФрд░ рдкрд╛рд░реНрд╕ рдЬреЛрдВрд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
    рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЯреИрдЧ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рд╛рдердорд┐рдХ рдЙрддреНрддрд░ рднреЗрдЬреЗрдВ, рдпрд╛ рднреЗрдЬрдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдХреЛ рдмрджрд▓реЗрдВ


рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ



рдЫрд╡рд┐
рдбреНрд░реИрдЧ рдПрдВрдб рдбреНрд░реЙрдк рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдЙрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬреЛ рдбреНрд░реИрдЧ рдПрдВрдб рдбреНрд░реЙрдк рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред

рдЬрдм рдЖрдк рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдПрдХ рд▓рд┐рдВрдХ рдмрдирд╛рдПрдВ рдЬрд┐рд╕ рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЪрдпрди рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА
 <a href="/image/save/" name="image" multiple jasync> </a> 

рдпрд╛ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдЫрд╡рд┐ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрд╕реЗ рдЕрд╡рд░реБрджреНрдз рдХрд░реЗрдВ
 <div href="/image/save/" name="image" dropfile jasync> </div> 

рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЫрд╡рд┐ рдХреА рд▓реЛрдбрд┐рдВрдЧ рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ

 $( document ).on( 'jasync.beforeSend', 'a[type=file]', function( e, imgs ) { //     $( this ).jasync( { 'addData': { count: 20 }, 'maxSize': 20000 //    } ); if( imgs.nosupport ) { $( '#answer' ).html( '   iframe,    ...' ); return; } for( var i = 0, l = imgs.length; i < l; i++ ) { imgs[ i ] //       .bind( 'jasync.load', function( e, file ) { // file -    base64 $( 'body' ).append( '<img src="' + file + '" />' ); $( this ) //      .bind( 'jasync.uploadProgress', function( e, percent, obj ) { // percent -   } ) //    .bind( 'jasync.success', function( e, data ) { //console.log( data ); } ) //   .bind( 'jasync.error', function() { } ); } ); } } ).on( 'jasync.success', 'a[type=file]', function( e, data ) { //      iframe $( '#answer' ).html( data ); } ); 


рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ http://jquery-async.com/download/ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдпрд╛ рдпрджрд┐ рд╕рд░реНрд╡рд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИ, рддреЛ рдпрд╣рд╛рдВ

Source: https://habr.com/ru/post/In177069/


All Articles