<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; JavaScript: асинхронная загрузка содержимого без обновления страницы]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=1521&amp;type=atom" />
	<updated>2008-06-11T18:07:47Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=1521</id>
		<entry>
			<title type="html"><![CDATA[Re: JavaScript: асинхронная загрузка содержимого без обновления страницы]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=11349#p11349" />
			<content type="html"><![CDATA[<p>Недостаток всех предыдущих примеров - код страницы &quot;размазан&quot; по обоим файлам - основному и подгружаемому.<br />Отладка и модификация затруднены.<br />Более удобно не отображать результат в подгружаемом скрипте, а просто вернуть значение обратно в основную страницу и продолжить работу и уже в ней.</p><p>Пример 4. Callback<br />(без веб сервера не заработает)<br />page4.htm</p><div class="codebox"><pre><code>&lt;html&gt;
&lt;body&gt;

 &lt;input type=text id=&quot;x&quot; value=&quot;2&quot; &gt;
 &lt;input type=button value=&quot;TEST&quot; onclick=&quot;get()&quot;&gt;

 &lt;script id=&quot;get&quot; type=&quot;text/javascript&quot;&gt;

  function get()
  {
   var x=document.getElementById(&quot;x&quot;).value;    // получаем исходное значение
   var loader=document.createElement(&quot;script&quot;);    // создаем скрипт
       loader.id=&quot;loader&quot;;            // id понадобится чтобы потом удалить скрипт
       loader.type=&quot;text/javascript&quot;;
       // параметры: x=число для обработки, callback=имя функции возврата
       loader.src=&quot;calc.asp&quot;+&quot;?x=&quot;+escape(x)+&quot;&amp;callback=getEnd&amp;rnd=&quot;+Math.random();
   document.body.appendChild(loader);
  }

  function getEnd(result)        // сюда попадем по окончании работы скрипта calc.asp
  {
   var x=document.getElementById(&quot;x&quot;);    // отображаем результат работы запроса к серверу
       x.value=result;

   var loader=document.getElementById(&quot;loader&quot;); // удаляем отработавший скрипт
   document.body.removeChild(loader);
  }

 &lt;/script&gt;
&lt;body&gt;
&lt;/html&gt;</code></pre></div><p>calc.asp</p><div class="codebox"><pre><code>&lt;%
 // эта часть исполняется на сервере

  var callback=Request.QueryString(&quot;callback&quot;)+&quot;&quot;;    // получили имя функции возврата
  var x=Request.QueryString(&quot;x&quot;)+&quot;&quot;;            // получили параметр x
  var result=x*2;                    // обработали его

%&gt;

 // эта часть исполняется в браузере

 &lt;%=callback%&gt;(&quot;&lt;%=result%&gt;&quot;);     // ASP превратит это в: getEnd(&quot;4&quot;);</code></pre></div>]]></content>
			<author>
				<name><![CDATA[fps]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=100</uri>
			</author>
			<updated>2008-06-11T18:07:47Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=11349#p11349</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JavaScript: асинхронная загрузка содержимого без обновления страницы]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=11343#p11343" />
			<content type="html"><![CDATA[<p>Можно не прописывать скрипт &quot;get&quot; в html заранее, а создать его динамически:<br /></p><div class="codebox"><pre><code>&lt;html&gt;
&lt;body&gt;

&lt;p id=&quot;x&quot;&gt;text&lt;/p&gt;
&lt;input type=button value=&quot;TEST&quot; onclick=&quot;get()&quot;&gt;

&lt;script id=&quot;get&quot; type=&quot;text/javascript&quot;&gt;
function get()
{
    var loader = document.createElement(&quot;script&quot;);
    loader.id = &quot;loader&quot;;
    loader.type = &quot;text/javascript&quot;;
    loader.src = &quot;async.js&quot; + &quot;?rnd=&quot; + Math.random();
    document.body.appendChild(loader);
}
&lt;/script&gt;

&lt;body&gt;
&lt;/html&gt;</code></pre></div><p>Благодарность за разъяснения - <strong>fps</strong>.</p>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2008-06-11T10:38:01Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=11343#p11343</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JavaScript: асинхронная загрузка содержимого без обновления страницы]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=11342#p11342" />
			<content type="html"><![CDATA[<p>В URL скрипта можно добавить мусор, чтобы он не мог скешироваться:<br /></p><div class="codebox"><pre><code>&lt;input type=button value=&quot;TEST&quot; onclick=&quot;document.getElementById(&#039;get&#039;).src=&#039;async.js&#039;+&#039;?rnd=&#039;+Math.random()&quot;&gt;</code></pre></div><p>Благодарность за разъяснения - <strong>fps</strong>.</p>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2008-06-11T10:17:56Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=11342#p11342</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[JavaScript: асинхронная загрузка содержимого без обновления страницы]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=11341#p11341" />
			<content type="html"><![CDATA[<p>Простейший пример.<br />Файл <strong>page.html</strong>:<br /></p><div class="codebox"><pre><code>&lt;html&gt;
&lt;body&gt;
&lt;script id=&quot;get&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;

&lt;p id=&quot;x&quot;&gt;text&lt;/p&gt;
&lt;br&gt;
&lt;input type=button value=&quot;TEST&quot; onclick=&quot;document.getElementById(&#039;get&#039;).src=&#039;async.js&#039;&quot;&gt;

&lt;body&gt;
&lt;/html&gt;</code></pre></div><p>Файл <strong>async.js</strong>:<br /></p><div class="codebox"><pre><code>var x = document.getElementById(&#039;x&#039;);    // получаем параметр
x.innerHTML = new Date();                // отображаем результат</code></pre></div><p>При нажатии на кнопку &quot;Test&quot; на html-странице текстовое содержимое тега &quot;p&quot; будет изменено, без обновления самой страницы.<br />В Opera это сработает только один раз, после чего она скеширует скрипт и больше его подгружать не будет.<br />Благодарность за разъяснения - <strong>fps</strong>.</p>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2008-06-11T10:13:10Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=11341#p11341</id>
		</entry>
</feed>
