Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Даннае из скрипта через ajax


Автор: sayber 14.2.2007, 00:42
Проблема в следующем. Я через js отправляю данные ПХП скрипту который в свою очередь возвращает обработанный запрос.

Но почему то не хочет возвращать while.

Вот html код поиска (форма)

Код

    <input id="searchQuery"  type="text" size="30" >
    
    <input type="button" onclick="javascript: sendSearchRequest();" value="искать">

<hr />
<p id="result">результат поиска</p>


AJAX 

Код

function createHttpRequest() {
var httpRequest;
var browser = navigator.appName;

if (browser == "Microsoft Internet Explorer") {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
} else {
httpRequest = new XMLHttpRequest();
}

return httpRequest;
}  



function sendRequest(file, _resultId, getRequestProc) {
resultId = _resultId;
document.getElementById(resultId).innerHTML = 'Подождите, идет загрузка...';
httpRequest.open('get', file);
httpRequest.onreadystatechange = getRequestProc;
httpRequest.send(null);
}  


function getRequest() {
if (httpRequest.readyState == 4) {
document.getElementById(resultId).innerHTML = httpRequest.responseText;
}
}  


var httpRequest = createHttpRequest();
var resultId = '';  



ПхП скрипт

Код


$search = $_GET['q'];

$search = substr($search, 0, 64);
$search = preg_replace("/[^\w\x7F-\xFF\s]/", " ", $search);

if($good = trim(preg_replace("/\s(\S{1,2})\s/", " ", ereg_replace(" +", " "," $search ")))) {


$sql="SELECT * FROM s_conference WHERE conference_smalltext LIKE '%".$good."%'";

$query = mysql_query($sql) or die (mysql_error());

while ($row=mysql_fetch_array($query))

{
      
     echo "{$row['conference_smalltext']}<br>";
     
}


} else {
    
echo "
<div id=conf align=center style=\"padding:8px\">
<b>СЛИШКОМ КОРОТКИЙ ЗАПРОС ДЛЯ ПОИСКА. СЛОВО ДОЛЖНО БЫТЬ БОЛЬШЕ 2-х БУКВ.</b>
</div>
";
    
}


Все данные он нормально возвращает, переменные проходят. Но не выводится while

Автор: Mal Hack 14.2.2007, 01:20
     echo $row['conference_smalltext']."<br>";

Автор: sayber 14.2.2007, 01:26
я и так пробовал. 0 результата

Автор: Mal Hack 14.2.2007, 10:35
Значит там пусто.

Автор: mishaSL 14.2.2007, 12:42
sayber, проверь у тебя без ajax-а  php скрипт поиска работает. Если да то дело в javascript-е (можешь воспользоваться стандартными библиотеками).

Автор: sayber 14.2.2007, 13:10
Работает.

Какими стандартными??? Это и есть стандартная.

Автор: mishaSL 14.2.2007, 14:29
Я к примеру пользуюсь xajax и проблем особо не возникает. smile 

Покажи функцию  sendSearchRequest()

Автор: sayber 14.2.2007, 21:01
Код


function sendSearchRequest() {
sendRequest('search.php?q=' + document.getElementById('searchQuery').value ,  'result',  getRequest);
}


Я чет не догнал как xajax пользоваться.

Автор: mishaSL 15.2.2007, 17:29
Цитата(sayber @  14.2.2007,  21:01 Найти цитируемый пост)
Я чет не догнал как xajax пользоваться.


Как пользоваться xajax описано здесь http://wiki.xajaxproject.org
В архиве вместе с самим xajax идет также несколько примеров, посмотри на них, так все элементарно...

Если не получается, то создай отдельную тему и покажи что имеено у тебя не выходит.

P.S. По поводу пвоего примера, сейчас смотрю...

Автор: sayber 15.2.2007, 19:49
mishaSL,  Да я смотрел примеры... Отстой там а не примеры.


Вот так надо новичкам показовать.
http://sayber.ru/2007/02/14/ajax_dlja_nubov_ili_kak.html

мне пофиг что там какие функции делают. Мне нужен нормальный русский, разжованный, готовый для реализации пример. 
Как к примеру я написал у себя.

Автор: safo 16.2.2007, 14:01
sayber
httpRequest.send(null) так к Firefoxe. httpRequest.send() так в MSIE

Автор: sayber 16.2.2007, 16:14
safo, Не понял? а разница??? Он ни в каком не работает.

Автор: mishaSL 16.2.2007, 19:36
sayber, во-первых не нужно ругаться. Здесь помогают найти и исправить твои ошибка, а не пишут за тебя скрипты.

Вот код на основе твоего , он работает, проверял:
файл test.php
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Преобразовани заголовка</title>
<script type="text/javascript">
function createHttpRequest() {
var httpRequest;
var browser = navigator.appName;

if (browser == "Microsoft Internet Explorer") {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
} else {
httpRequest = new XMLHttpRequest();
}

return httpRequest;
}



function sendRequest(file, _resultId, getRequestProc) {
resultId = _resultId;
document.getElementById(resultId).innerHTML = 'Подождите, идет загрузка...';
httpRequest.open('get', file);
httpRequest.onreadystatechange = getRequestProc;
httpRequest.send(null);
}


function getRequest() {
if (httpRequest.readyState == 4) {
document.getElementById(resultId).innerHTML = httpRequest.responseText;
}
}


var httpRequest = createHttpRequest();
var resultId = '';

function sendSearchRequest() {
alert(document.getElementById('searchQuery').value);
sendRequest('test2.php?q=' + document.getElementById('searchQuery').value ,  'result',  getRequest);
}
</script>
</head>
<body>
    <input id="searchQuery"  type="text" size="30" >

    <input type="button" onclick="javascript: sendSearchRequest();" value="искать">
<hr />
<p id="result">результат поиска</p>
</body>
</html>


файл test2.php
Код

<?php
header("Content-type: text/plain; charset=windows-1251");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
$search = $_GET['q'];
$search = substr($search, 0, 64);
$search = preg_replace("/[^\w\x7F-\xFF\s]/", " ", $search);
if($good = trim(preg_replace("/\s(\S{1,2})\s/", " ", ereg_replace(" +", " "," $search ")))) {
/*$sql="SELECT * FROM s_conference WHERE conference_smalltext LIKE '%".$good."%'";
$query = mysql_query($sql) or die (mysql_error());
while ($row=mysql_fetch_array($query))
{

     echo "{$row['conference_smalltext']}<br>";

}*/
echo 'Поиск работает';
} else {

echo "
<div id=conf align=center style=\"padding:8px\">
<b>СЛИШКОМ КОРОТКИЙ ЗАПРОС ДЛЯ ПОИСКА. СЛОВО ДОЛЖНО БЫТЬ БОЛЬШЕ 2-х БУКВ.</b>
</div>
";

}
?>


запрос к базе закоментирован по понятным причинам (т.к. у меня нет твоей базы). Сообщения выводятся.
Проверь все должно работать smile 

Автор: sayber 16.2.2007, 20:12
mishaSL, Проверю.

А я и не ругаюсь. Может тебе просто так показалалось.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)