Перейти к содержимому

Реферальная программа Мегаплана

Выбрать шаблон и создать сайт

Ajax запрос - как передать в функцию id?

#1 Вячеслав

Вячеслав
  • Пользователь
  • 357 сообщений
  • Репутация: 0
0

Отправлено 04 Октябрь 2009 - 03:36

Привет, решил попробовать Ajax в действии...
Пробовал на Mootools но так и невышло, а на Jquery получилось)), но не до конца то что мне хотелось, идея такая - нужно чтоб при клике на ссылке в функцию передавалось определенное значение (id=1), для кажной ссылки свое.

Для того чтобы в Ajax запрос подставлялось нужное значение(id) и я мог по нему вытаскивать пределенную статью из БД.
Сейчас у меня вот так - выбирается статья с id=1 и ее текс просто вставляется в контейнер, подскажите как передать значение в вызываемую функцию?

это index.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="" content="text/html; charset=iso-8859-1" />
<title>fgfghfg</title>
<meta http-equiv="" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#makeRequest").click(function(){

$.get("script.php", { id: "1" }, function(arr_art){
document.getElementById('preview').innerHTML = ''+ arr_art;
});

});
});
</script>

</head>

<body>
<div id="preview"></div>
<a href="#" id="makeRequest"> Clik me </a>
</body>
</html>


А это обработчик script.php:

<?php
$db = mysql_connect ("localhost","toorr2p","***");
mysql_select_db ("cleverscript", $db);

if(isset($_GET['id'])){
$id = $_GET['id'];
$id = (int)$id;

$result = mysql_query ("SELECT * FROM article WHERE id=$id",$db);
$arr_art = mysql_fetch_array($result);
echo $arr_art['text'];
}
?>

 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. AJAX. Передача данных без перезагрузки
  2. Передача параметров в jQuery функцию
  3. Ругается при Ajax-запросе.
  4. Запрос для рекурсивной функции
  5. Не возвращаются данные при аякс запросе

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 04 Октябрь 2009 - 11:44

Вячеслав, А что тут сложного?
Пишем так:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="" content="text/html; charset=iso-8859-1" />
<title>fgfghfg</title>
<meta http-equiv="" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript">

function getArticle(idArticle){
$.get("script.php", { id: idArticle }, function(text){
document.getElementById('preview').innerHTML = text;
});
});

</script>

</head>

<body>
<div id="preview"></div>
<a href="java script: getArticle(1)"> Статья #1 </a>
<a href="java script: getArticle(2)"> Статья #2 </a>
<a href="java script: getArticle(3)"> Статья #3 </a>
</body>
</html>


Проверка на существование статьи с таким ID идёт на стороне сервера, то есть в файле к которому мы обращаемся с помощью Ajax. Главное нужно с осторожностью относится к присланным переменным из javascript, так как их можно и подменить.
Если точно знаем что в скрипт передаётся число, в PHP просто используем intval()

Добавлено:
Заметил что на слово javascript у IPB дурное влияние, он его разбивает на два
  • 0

#3 Вячеслав

Вячеслав
    Topic Starter
  • Пользователь
  • 357 сообщений
  • Репутация: 0

Отправлено 04 Октябрь 2009 - 14:33

Пробывал я и так, но не срабатывает ничего (( низнаю почему, кликаю на ссылки но ничго не происходит
  • 0

#4 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 04 Октябрь 2009 - 14:39

а что дэббагер говорит?
кстати может проблема в php коде7
  • 0

#5 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 06 Октябрь 2009 - 18:41

Вячеслав, посмотрив debugger под FF, там увидишь где что передаётся и что из запроса возвращается, только отладчиком поработай.
Вообще написанный код должен быть рабочим, попробуй вот так:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="" content="text/html; charset=iso-8859-1" />
<title>fgfghfg</title>
<meta http-equiv="" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript">

function getArticle(idArticle){
$.get("script.php", { id: idArticle }, function(text){
$('#preview').html(text);
});
});

</script>

</head>

<body>
<div id="preview"></div>
<a href="java script: getArticle(1); return false;"> Статья #1 </a>
<a href="java script: getArticle(2); return false;"> Статья #2 </a>
<a href="java script: getArticle(3); return false;"> Статья #3 </a>
</body>
</html>

  • 0

#6 Вячеслав

Вячеслав
    Topic Starter
  • Пользователь
  • 357 сообщений
  • Репутация: 0

Отправлено 10 Октябрь 2009 - 23:10

Спасибо! все зароаботало но без return false; и если javascript написано слитно!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="" content="text/html; charset=iso-8859-1" />
<title>fgfghfg</title>
<meta http-equiv="" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript">

function getArticle(idArticle){

$.get("script.php", { id: idArticle }, function(text){
$('#preview').html(text);
});
}

</script>

</head>

<body>
<div id="preview"></div>
<a href="java script:getArticle(1);"> Статья #1 </a>
<a href="java script:getArticle(2);"> Статья #2 </a>
<a href="java script:getArticle(3);"> Статья #3 </a>
</body>
</html>

  • 0

#7 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 11 Октябрь 2009 - 09:56

Вячеслав, внимательнее читай мои посты, я писал, что слитно надо javascript
  • 0

#8 Вячеслав

Вячеслав
    Topic Starter
  • Пользователь
  • 357 сообщений
  • Репутация: 0

Отправлено 16 Октябрь 2009 - 19:51

Это я чтоб напомнить для других малоли, я все подметил сразу :)

До этого была функция на Jquery но задача изменилась и теперь Ajax нужно использовать в Joomla без применения Jquery тоесть на Mootools.

Вроде все написал по инструкции но консольошибок в FF выдает такую ошибку при событии click на элементе:

Request is not defined
[Break on this error] var req = new Request({\r\n


Код функции:

window.addEvent('domready', function() {
$('params__viewTabsToHide').addEvent('click', function() {
var req = new Request({
method: 'get',
url: 'http://www.cleverscript.ru/ajax_jquery/script.php',
data: { 'id' : '1' }
}).send();
});
});

  • 0

#9 Вячеслав

Вячеслав
    Topic Starter
  • Пользователь
  • 357 сообщений
  • Репутация: 0

Отправлено 16 Октябрь 2009 - 23:32

Отбой разобрался, это потому что в Joomla версия var MooTools={version:'1.11'} а я ниписал под 1,2,3 ((
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru