Помогите разобраться AJAX

reddevel

Новичок
Помогите разобраться AJAX

Всем доброго времени. Не пинайте сильно только учусь понимать AJAX возникла задача отправить запрос БД и получить ответ без перезагрузки страницы, собственно понаписал всякой фигни только вот обидно не работает в чем может быть проблема?! или я вообще не то что-то сделал?


engine.js
PHP:
url = document.location.href;
xend = url.lastIndexOf("/") + 1;
var base_url = url.substring(0, xend);
function ajax_do (url) {
if (url.substring(0, 4) != 'http') {
url = base_url + url;}
var jsel = document.createElement('SCRIPT');
jsel.type = 'text/javascript';
jsel.src = url;
document.body.appendChild (jsel);
}
index.php
PHP:
<html>
          <head> 
                <script type="text/javascript" src="engine.js"></script> 
          </head> 
           <body>
              <table>
  		<tr> 
 		<td><input type="text" id="newfield"></td>
  		<td><input type="submit" value="Запрос" onclick="ajax_do('page1.php?query='"+document.getElementById('newfield').value")"></td>
  		</tr> 
 		<tr colspan="2">
  		<td> 
 		<div id="contentdiv"></div>
	  		</td>
		  		</tr> 
         </body>
</html>
page1.php

PHP:
<?    	
$html = $_GET["query"];
  		include("../inc/base.php");
  			if(strlen($html)<=0)
  				{ 
 					$out= "Введите поисковый запрос"; 
 					exit(); 
 				}  
				else  
	                {  
	        	$len= strlen($html); 
  			$result=mysql_query("select * from gn_words");  // определение   	
		while($row=mysql_fetch_assoc($result))  
			{       $true=strncmp($html,$row["gn_words_word"],$len); 
   				if($true<>0)  	
			$cx=$cx+1;    		
		if($true==0)
  				{  
				if($row["gn_words_sale"]==0)
	  				$sale="свободно";  	
			else  			
	$sale="занято";
    				$cost=($row["gn_words_total"]/10000)*27;
          				$out= "<font class=\"btext\">Стоимость поискового слова '".$row[gn_words_word]."': ".$cost." -руб. в месяц<br>  					Это слово ".$sale." для продажи.<br></font>";	    				$zx=$zx+1;  				}  				}  			  			}	  			    ?>    
div = document.getElementById('contentdiv');
div.innerHTML = <?print $out?>
 

RoLex

Новичок
честно говоря вообще не вижу где тут попытка "аяксом" отправить запрос.
 

diamond_krnl

pure-php
имхо для начала нужно посматреть готовые библиотеки: xajax, jquery, prototype...
разобраться как там что работает, а уж потом велосипеды писать - не благодарное оно дело, на свои грабли наступать :)
 

A-Lex[FM]

Web/Highload/DataScience
этот скрипт просто подставляет тег <script>, что имитирует работу аякса внутрь которого некто page1.php принтит данные и их обработчик, тоесть
div = document.getElementById('contentdiv');
div.innerHTML = <?print $out?>

посмотри что содержится в переменной $out
 

RoLex

Новичок
Автор оригинала: A-Lex[FM]
этот скрипт просто подставляет тег <script>, что имитирует работу аякса внутрь которого некто page1.php принтит данные и их обработчик, тоесть
div = document.getElementById('contentdiv');
div.innerHTML = <?print $out?>

посмотри что содержится в переменной $out
при загрузке страницы он может быть что-то и выведет в диве, но не после того, как будет собитие onclick.
то что автор тут написал, вообще не аякс, а простой яваскрипт.
технология аякса подразумевает под собой отправку запроса на сервер. тут ничего подобного нет....

ЗЫ.Гравицапа правильно ссылку дал, для ознакомления по работе с технологией аякса.
 

A-Lex[FM]

Web/Highload/DataScience
RoLex
эта технология используется даже в JsHttpRequest, если браузер не поддерживает стандартный объект XmlHttpRequest

автор всё правильно делает, просто что-то не доработал
 

dark-demon

d(^-^)b
RoLex, это не аякс не потому, что нет запроса (как можно без запроса отправить и получить данные?), а потому, что передаётся не xml. поэтому правильнее это называть AJAJ (асинхронный яваскрипт и яваскрипт) ;-)

reddevel, таким методом можно передать сравнительно небольшое количество данных (порядка килобайта, в зависимости от настроек сервера), поэтому для передачи лучше использовать ифреймы, либо xmlhttprequest
 
Сверху