рддреЛ рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рд╣рд░ рдХреЛрдИ рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЖрдк рд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХреИрд╕реЗ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
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 ) {
рдЦреИрд░, рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рдХреЛ рдХрдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдЙрдкрдпреЛрдЧреАред
рдФрд░ рдпрд╣рд╛рдВ
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',
рдпрд╛
{ url: ' ' }
рдФрд░ рдЗрд╕рд▓рд┐рдП рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣рдо рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рдо рд╕рдмрдорд┐рд╢рди рдХреЛ рд░рджреНрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдлреЙрд░реНрдо рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ:
$( 'form' ).bind( 'jasync.beforeSend', function( ) { var form = $( this ); if( !form.isValid() ) { form.jasync( 'stop', true );
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', '', '!!!' );
рдЬрдм рдЖрдкрдХрд╛ рдбреЗрдЯрд╛ рдПрдХ iframe рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ, рдпрд╣ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ:
- рдЬрдм рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВред
рдЪреВрдВрдХрд┐, рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рд╣рдо iframe рдореЗрдВ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рдЕрдиреНрдп рдбреЛрдореЗрди рд╕реЗ рдбреЗрдЯрд╛ рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ,
рдЬрдм рдЖрдк рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдбреЛрдореЗрди рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЛрддреА рд╣реИред
- рдЬрдм рдЖрдк рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдЫрд╡рд┐рдпрд╛рдВ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ 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 ) {
рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ http://jquery-async.com/download/ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдпрд╛ рдпрджрд┐ рд╕рд░реНрд╡рд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИ, рддреЛ рдпрд╣рд╛рдВ