Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
1

Передача данных в БД (ajax)

17.05.2010, 18:43. Показов 1826. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
вот такой код сделал

index.php

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script type="text/javascript">
function f(){
    var req= new XMLHttpRequest();
    req.open('get','data.php'+'?a',true);
    req.send(null);
    }
</script>
<title>Test</title>
</head>
<body>
 
<form action="#" method="get">
<input type="text" name="a">
<input type="submit" onClick="f()" value="ok">
</form>
<br>
<?php
echo $a;
?>
 
 
 
</body>
</html>
и data.php

PHP
1
2
3
4
5
<?php
$a=$_GET['a'];
echo $a;
// сдесь далее будет код записи данных в бд
?>
но сделал так чтобы его можно было и увидеть , но что то не работает , подскажите что не так ?

тоесть пытаюсь динамически передать данные в бд
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2010, 18:43
Ответы с готовыми решениями:

Ajax передача данных
Доброго времени суток. Есть два домена третьего уровня. Первый test, второй test1. На test1...

Передача данных с формы в AJAX запрос
как передать в AJAX запрос значение переменных из формы сюда data:...

Передача данных из ajax запроса к бд в input
Здравствуйте. Есть select со списком кафедр. Нужно, чтобы при выборе кафедры в один input из базы...

Передача данных из js в php через ajax
помогите, пожалуйста. Не получается сделать авторизацию. В консоли выводит: ...

9
694 / 534 / 40
Регистрация: 22.06.2009
Сообщений: 1,293
17.05.2010, 19:06 2
Изначально создается объект XMLHttpRequest и уже потом с помощью него отправляются запросы. У тебя я создания этого объекта не увидел. Кроссбраузерно он делается так:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function getXmlHttp(){
  var xmlhttp;
  try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
    try {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
      xmlhttp = false;
    }
  }
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
  }
  return xmlhttp;
}
Далее. Подсветку кода создали не зря. Если ты в своем примере включишь подсветку кода то сразу увидишь:
Javascript
1
2
3
4
5
function f(){
var req= new XMLHttpRequest();
req.open('get','data.php'+'?a',true);//Внимание на эту строку. В кавычках указывается текст. Переменные указываются без кавычек. 
req.send(null);
}
Запись в БД делается как обычно на языке php. С помощью аякса передается переменная, а манипулирование этой переменной точно такое же.
Советую изучить принципы работы аякса например по этому материалу http://javascript.ru/ajax/intro.

P.S. Имхо ты идешь не тем путем. Изучение отдельных технологий это просто упражнения для ума. Если хочешь уметь что то на практике, то нужно и заниматься практикой.
Хочешь создавать сайты, ну и пробуй создать конкретный сайт с конкретным функционалом. С 90% вероятностью для первого сайта аякс тебе не понадобится.
1
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
17.05.2010, 19:32  [ТС] 3
да хотел сразу все кирпичики изучить из которых делаются все сайты , а динамика практически везде сейчас используется , вот думал с ajax разберусь и буду в комплексе делать
0
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
18.05.2010, 13:05  [ТС] 4
всеравно неработает , вот пробовал по вики сделать и всеравно нет и нет

index.php

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script type="text/javascript">
//---------------------------------------------------------
function f(){
    var req = new XMLHttpRequest();
        function createRequestObject()
                {
                if (XMLHttpRequest == undefined) {
                XMLHttpRequest = function() {
                try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); }
                    catch(e) {}
                try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); }
                    catch(e) {}
                try { return new ActiveXObject("Msxml2.XMLHTTP"); }
                    catch(e) {}
                try { return new ActiveXObject("Microsoft.XMLHTTP"); }
                     catch(e) {}
                throw new Error("This browser does not support XMLHttpRequest.");
                    };
                }
                    return null;
                }
 
            }
            
        req.open("GET",'data.php'+?a,true);
        req.onreadystatechange = processReqChange;
        req.send(null);
        }
 
</script>
<title>Test</title>
</head>
<body>
 
<form action="#" method="get">
<input type="text" name="a">
<input type="submit" onClick="f()" value="ok">
</form>
<br>
<?php
echo $a;
?>
 
 
</body>
</html>
data.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$a=$_GET['a'];
echo $a;
 
$host='localhost';
$user='root';
$pass='';
$name='test';
 
$l=mysql_connect($host,$user,$pass);
mysql_select_db($name,$l);
 
 
$id=4;
 
$q="insert into tes value ('$a',$id)";
mysql_query($q,$l);
 
mysql_close();
 
?>
в БД таблица tes и поля a и id (для упрощения)
отдельно БД тестил все там работает записывает , там все норм
проблемма с передачей переменной ('а')
подскажите где ошибка ?
0
694 / 534 / 40
Регистрация: 22.06.2009
Сообщений: 1,293
18.05.2010, 17:13 5
Твой код проще переписать чем исправить ошибки. Без обид
Написано с минимальной отладкой, но вроде работает.

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 
<head>
    <title>Testing...</title>
    <script type="text/javascript" src="script.js"></script>
</head>
 
<body>
 
<form method="post" action="/answer.php" id="form">
    <input type="text" name="ask" id="input">
    <input type="submit" id="submit" value="value">
</form>
    
</body>
 
</html>
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
window.onload = function(){
    document.getElementById("form").onsubmit = request;
}
 
function getXmlHttp(){
    var xmlhttp;
    try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
            xmlhttp = false;
        }
    }
    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
        xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
}
 
function request(){
    var req = getXmlHttp();
    var ask = document.getElementById("input").value;
    req.onreadystatechange = function() {  
        if (req.readyState == 4) { 
            if(req.status == 200) { 
                alert("answer: "+req.responseText);
            }
        }
    }
    req.open('GET', '/answer.php?ask='+ask, true);  
    req.send(null);
    return false;
}
PHP
1
2
3
4
5
6
<?php
if($_GET["ask"]){
    echo "Request succes! Value: ".$_GET["ask"];
}else{
    echo "Request empty!";
};
Вопросы?

Добавлено через 24 минуты
Бросилось в глаза сразу после отправки. В html вот этот кусок <form method="post" неправильный. Тут надо поставить get, а не post, но это влияет только на отправку формы при отключенном js у пользователя.

Добавлено через 20 минут
Чтобы было понятнее расскажу основной алгоритм:

1. Создаем чистый html безо всякого js с формой.
2. В подключенном js файле ставим обработчик на отправку формы сразу после загрузки всего окна.
3. Пишем функцию по кроссбраузерному созданию объекта xmlhttprequest
4. Пишем функцию request, которая и будет осуществлять работу ajax. В функции
а. Создаем объект xmlhttprequest в переменной "req".
б. Создаем переменную ask в которую помещаем значение input из формы.
в. Ставим обработчик на событие onreadystatechange, то по сути прописываем что делать после получения ответа от сервера.
г. Запрашиваем страницу на сервере.
д. Функция должна возвращать false, иначе дополнительно к js запросу форма отправится обычным методом без js.

Как то так.
0
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
18.05.2010, 17:37  [ТС] 6
вопросы как раз и есть

1: почему в index.html метод post а в js get
2: убрал

Javascript
1
2
3
4
5
6
7
req.onreadystatechange = function() {  
                if (req.readyState == 4) { 
                        if(req.status == 200) { 
                                alert("answer: "+req.responseText);
                        }
                }
        }
так как алерт ненужен , да и считаю лишний текст
3:ask переменная не передается , в алерте текст высвечивало а вот в бд пустое место пишет
0
694 / 534 / 40
Регистрация: 22.06.2009
Сообщений: 1,293
18.05.2010, 18:27 7
Цитата Сообщение от Nebiros Посмотреть сообщение
1. почему в index.html метод post а в js get
Ответил еще в предыдущем посте.

Цитата Сообщение от Nebiros Посмотреть сообщение
2: убрал
Javascript
1
2
3
4
5
6
7
req.onreadystatechange = function() { 
 if (req.readyState == 4) { 
 if(req.status == 200) { 
 alert("answer: "+req.responseText);
 }
 }
 }
А зачем убрал все? Если не нужен alert так и удаляй alert. В любом случае какие то действия на странице нужно совершать после ответа сервера, чтобы пользователь понял что что-то произошло после нажатия на кнопку.

Цитата Сообщение от Nebiros Посмотреть сообщение
3:ask переменная не передается , в алерте текст высвечивало а вот в бд пустое место пишет
Начальные параметры.
Есть php скрипт add.php записывающий данные в базу.
Данные он получает методом GET из переменной ask.

Задача.
Проверить пишет ли скрипт данные в базу.

Решение.
Запросить страницу add.php в браузере и передать в строке браузера переменную ask с любым значением.
Итоговый запрос в строке браузера:
add.php?ask=bugoga

Если bugoga запишется в базу, то скрипт пишет данные полученные методом GET.
Проверь безо всякого ajax, пишутся у тебя данные или нет?

После проверки если все работает
Вставь все что есть в твоем файле add.php в мой файл answer.php в самое начало.
Ничего кроме этого не изменяй. Вообще ничего.

Что должно произойти?
Твоя вставленная часть добавит данные в базу. Моя часть выведет на страницу alert.
Все должно работать. Мне сейчас проверить негде.

Если все заработает, то разбери код по строчкам. Он довольно легкий.
1
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
18.05.2010, 18:40  [ТС] 8
нашел наконецто где была ошибка причем такая элементарная
PHP
1
2
3
4
5
6
7
8
<?php
if($_GET["ask"]){
        echo "Request succes! Value: ".$_GET["ask"];
}else{
        echo "Request empty!";
};
 
$a=$_GET['a']; // <--- сдесь старая переменная стояла
смешно до слез , пол дня бился а ошибка элементарная

спасибо за подсказки , теперь все работает
0
694 / 534 / 40
Регистрация: 22.06.2009
Сообщений: 1,293
18.05.2010, 18:43 9
Цитата Сообщение от Nebiros Посмотреть сообщение
спасибо за подсказки , теперь все работает
Весь остальной код понятен?
0
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
18.05.2010, 18:59  [ТС] 10
да вроде уже начинаю вникать , просто думал что в js коде чтото не так а про php код как то не подумал но по немногу начинаю вникать в js

p.s. Если чесно уже изучил так в среднем php mysql html css но вот js очень трудно чтото мне дается
0
18.05.2010, 18:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2010, 18:59
Помогаю со студенческими работами здесь

Ajax передача данных через заголовки
index.html: var xhr = new XMLHttpRequest(); xhr.open(&quot;GET&quot;, &quot;getdata.php?A=true&quot;, true); ...

Передача данных в табличку, AJAX запрос
добрый вечер коллеги, подскажите пожалуйста как мне передать еще один параметр через ajax вместо...

Передача данных из тэга А в ajax
Привет всем! Нужна помощь в ajax, я в этом новичёк Мне как то нужно передать значения из ссылки в...

Динамическая передача данных на Ajax
Здравствуйте форумчане. Собственно сначала код: &lt;script&gt; function osoby_calc2(){ var kil_osoby...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru