Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 20.11.2019
Сообщений: 19

Как передать даные через ajax и принять их на php

20.11.2019, 20:48. Показов 4139. Ответов 7

Студворк — интернет-сервис помощи студентам
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
let person = {
    name:"Vova",
    last:"Nak",
    age:18
}
// let person = "hello"
// let pre = "order=";
function toPHP(){
    var require = new XMLHttpRequest();
    
    require.open("POST","php1.php",true);
 
    require.setRequestHeader('Content-Type','application/json');    
 
    person = JSON.stringify(person);
    // console.log(data = JSON.stringify(person));
    require.onreadystatechange = function(){
        if(require.readyState != 4) return;
        if(require.status != 200){
            console.log(require.status + ": " + require.statusText);
        } else{
            console.log("Hello");
        }
        require.send(person);
    }
}
document.getElementById("goP").addEventListener("click",toPHP)
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" href="php.css">
    <title>Document</title>
</head>
<body>
    <div>
    <!-- <form action="php1.php" method="post" onsubmit="return false">
    </form>   -->
    <button id="goP">GOOOOOO</button>
    </div>
    <script src="https://code.jquery.com/jquery-3.4.1.min.js"
  integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
  crossorigin="anonymous"></script>
    <script src="php.js"></script>
</body>
</html>
PHP
1
2
 $a = json_decode(file_get_contents('php://input'));
 var_dump($a);
1)
Обязательно нужно употреблять тег формы, если в ajax запросе мы указываем куда и каким методом
Можно ли обойтись просто привязкой функции к кнопке?
2)Я хочу на кнопку отправлять объект и принимать его на стороне php, как мне это реализовать?
Пробовал через file_get_contents
ничего не получает
и через $ _POST то же ....
HTML на странице php 1.php
То есть встроенный в php
3)И еще, почему когда я выношу кнопку с тега формы, любые действия на стороне сервера не реагируют?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.11.2019, 20:48
Ответы с готовыми решениями:

Как передать через AJAX multiple select через serialize и обратиться к этому в php
Добрый день, подскажите пожалуйста. Раньше не было множественного выбора в select, передавал данные следующим образом: ...

Как передать массив js в php через ajax?
parametr - это массив вида var parametr = ; $.ajax({ url: &quot;ajaxik.php&quot;, cache: false, async: true, type: &quot;POST&quot;, ...

Как передать данные из одинаковых форм php скрипту через AJAX?
Задача следующая: На странице 50 форм. Все они разные и имеют структуру: Например форма #1 &lt;form...

7
0 / 0 / 0
Регистрация: 20.11.2019
Сообщений: 19
20.11.2019, 21:22  [ТС]
PHP
1
2
$a = json_decode(file_get_contents('php://input'));
var_dump($a);
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" href="php.css">
    <title>Document</title>
</head>
<body>
    <div>
    <button id="goP">GOOOOOO</button>
    </div>
    <script src="https://code.jquery.com/jquery-3.4.1.min.js"
  integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
  crossorigin="anonymous"></script>
    <script src="php.js"></script>
</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
let person = {
    name:"Vova",
    last:"Nak",
    age:18
}
// let person = "hello"
// let pre = "order=";
function toPHP(){
    var require = new XMLHttpRequest();
    
    require.open("POST","php1.php",true);
 
    require.setRequestHeader('Content-Type','application/json');    
 
    person = JSON.stringify(person);
    // console.log(data = JSON.stringify(person));
    require.onreadystatechange = function(){
        if(require.readyState != 4) return;
        if(require.status != 200){
            console.log(require.status + ": " + require.statusText);
        } else{
            console.log("Hello");
        }
        require.send(person);
    }
}
document.getElementById("goP").addEventListener("click",toPHP)
1)
Обязательно нужно употреблять тег формы, если в ajax запросе мы указываем куда и каким методом
Можно ли обойтись просто привязкой функции к кнопке?
2)Я хочу на кнопку отправлять объект и принимать его на стороне php, как мне это реализовать?
Пробовал через file_get_contents
ничего не получает
и через $ _POST то же ....
HTML на странице php 1.php
То есть встроенный в php
3)И еще, почему когда я выношу кнопку с тега формы, любые действия на стороне сервера не реагируют?
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
20.11.2019, 21:28
Vovajs, здравствуйте.
1) Вообще ничего не надо. Можно и не привязывать.
Бывает, страница открылась, и сразу слила данные из кредитной карты пользователя. Никаких лишних движений.
2) Объект отправляется в данном случае строкой. И сервер видит строку. Сервер может обрабатывать полученную строку, как угодно. Если захочет, соберет из нее объект.
3) Это уже мелочи реализации. Саму реализацию можно сильно осовременить.

Добавлено через 1 минуту
-----
JSON.stringify(person);
Это всего лишь строка.

Добавлено через 10 минут
Вот для начала нормальный пример:
Отправка данных в формате JSON
При помощи fetch() можно отправлять POST-запросы в формате JSON.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const url = 'https://example.com/profile';
const data = { username: 'example' };
 
try {
  const response = await fetch(url, {
    method: 'POST', // или 'PUT'
    body: JSON.stringify(data), // данные могут быть 'строкой' или {объектом}!
    headers: {
      'Content-Type': 'application/json'
    }
  });
  const json = await response.json();
  console.log('Успех:', JSON.stringify(json));
} catch (error) {
  console.error('Ошибка:', error);
}
https://developer.mozilla.org/... sing_Fetch

Если есть затруднения в JavaScript, то
https://learn.javascript.ru
1
0 / 0 / 0
Регистрация: 20.11.2019
Сообщений: 19
20.11.2019, 22:13  [ТС]
Но когда я нажимаю на кнопку, на стороне сервера я ничего не получаю, запрос будто поставлен правильно, но ответа нет, точнее
Я его хочу вывести из var_dumb () или echo
0
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
21.11.2019, 08:45
Цитата Сообщение от Vovajs Посмотреть сообщение
на стороне сервера я ничего не получаю
Потому что браузер ничего не отправляет. Откройте консоль браузера для себя
Цитата Сообщение от Vovajs Посмотреть сообщение
JavaScript
1
2
3
4
5
6
7
8
9
    require.onreadystatechange = function(){
        if(require.readyState != 4) return;
        if(require.status != 200){
            console.log(require.status + ": " + require.statusText);
        } else{
            console.log("Hello");
        }
        require.send(person); // вынести из функции обработчика события `onreadystatechange`
    }
Вы пытаетесь отправить запрос в функции обработчике onreadystatechange, но это событие здесь никогда не произойдёт.
2
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
21.11.2019, 12:55
Лучший ответ Сообщение было отмечено Vovajs как решение

Решение

У XMLHttpRequest действительно есть несколько преимуществ перед fetch(), например обработка отмены и индикатор прогресса.
Так что можно и не забывать XMLHttpRequest. Современное его использование:
php.js
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
36
37
38
39
/**
 * TAP-версия отправки JSON по HTTP методом POST без возможности отмены.
 * @param {string} url Строка URL.
 * @returns {Promise<String>} Промис со строкой ответа от сервера. 
 */
async function postJSONAsync(url, data) {
    return new Promise((resolve, reject) => {
        let xhr = new XMLHttpRequest();
        xhr.open("POST", url);
        xhr.setRequestHeader("Content-Type", "application/json");
        let body = JSON.stringify(data);
        xhr.send(body);
 
        xhr.onload = () => {
            if (xhr.status === 200) {
                resolve(xhr.response);
            }
            else {
                reject(new Error(`${xhr.status}: ${xhr.statusText}`));
            }
        };
        xhr.onerror = () => {
            reject(new Error(`Ошибка сети. Сервер не отдал код ошибки.`));
        };
    });
}
 
async function toPHP() {
    let person = {
        name: "Vova",
        last: "Nak",
        age: 18
    }
 
    let result = await postJSONAsync("demo.php", person);
    console.log(result);
}
 
document.getElementById("goP").addEventListener("click", toPHP);
1
0 / 0 / 0
Регистрация: 20.11.2019
Сообщений: 19
22.11.2019, 00:56  [ТС]
Спасибо вам за помощь,но все таки какой-ли бо ответ не получаю от сервера
PHP
1
2
3
4
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    echo "hey";
}
Таким способом хочу проверить или есть хоть какой-то запрос POST
При нажатии кнопки не чего не происходит,но должно вывестись "hey"
Я какой день ломаю себе голову но нечего.....
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
22.11.2019, 06:24
Лучший ответ Сообщение было отмечено Vovajs как решение

Решение

Цитата Сообщение от Vovajs Посмотреть сообщение
должно вывестись "hey"
В сообщении №6 выводится в консоль. Там пример абсолютно рабочий со стороны браузера.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.11.2019, 06:24
Помогаю со студенческими работами здесь

Через ajax в url:'ajax.php', нужно передать одну переменную, и значение radio кнопки
Как значение radio передать я разобрался, а вот как еще переменную со страницы кинуть в url: ajax.php Всем спасибо

Есть AJAX код, который отправляет POST данные в php. Как их принять в php?
Всем привет! AJAX код отправляет post данные в php файл. Как принять эти post данные в php? Вот AJAX: ...

Передать через Ajax php переменную
Со страницы авторизации, идет перенаправление на главную страницу. Все данные о пользователи хранятся в php сессии.Далее на главной...

Передать через AJAX в PHP двумерный массив
Добрый день. Есть примерно такой код: var range = , sliderValues = ; ... sliderValues = range; Есть массив range, который...

Как передать массив из базы данных (передать массив из php в javascript методом ajax)
&lt;?php //php страница qwe.php для обработки ajax запроса require_once &quot;blocks/head.php&quot;; ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru