Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 18.01.2021
Сообщений: 2

json запрос с сервера на localhost

18.01.2021, 22:52. Показов 3066. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Столкнулся с проблемой отправки json запроса с сайта с программой на кассовый аппарат, подключенный к компьютеру. Сразу оговорюсь; при отправки запросов в php curl все работает, но только при условии, что php выполняется на локальном компьютере, а необходимо чтобы программа была на сервере в интернете. Насколько я понимаю, это можно сделать средствами ajax. Вопрос как сделать например запрос {"command": "GetDriverInfo"} на localhost в ответ я должен получить информацию о драйвере. Пример рабочего варианта в php curl
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
$data = array("command" => "GetDriverInfo");    
$url = 'http://localhost:50010/api.json';
$postdata = json_encode($data);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
//curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
//curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8'));
$result = curl_exec($ch);
curl_close($ch);
print_r ($result);
?>
В ответ получаю: {"result":0,"driverVer":"1.9.0.580","protocolVer":"3.3","driverBaseVer":"0.2"}
Пробовал так:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
    $.ajax({
        type: "POST",
        url: "http://localhost:50010/api.json",
        data: {command: "GetDriverInfo"},
        dataType: "json",
         contentType: 'application/json; charset=UTF-8',
        success: function(data) {
            console.log(data);
            alert('Данные с кассы - '+JSON.stringify(data));
        }
    })
    </script>
?>
но результат не получаю даже на локальном компьютере.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.01.2021, 22:52
Ответы с готовыми решениями:

Отправить POST запрос и получить json данные с сервера. Как сделать?
Добрый день. Мне нужно создать html форму с двумя полями username и password, методом POST отправить ее на сервер. Далее получить от...

Вернуть JSON с localhost
как вернуть json из http://localhost:8080/car...

Установка mysql сервера на localhost
Нужен sql-сервер на комп (windows 7, 64 бит), дальше будет собираться плагин qt и всё это должно работать. Для собственной практики. ...

3
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
21.01.2021, 08:23
Здравствуйте.
Вы перепутали отправку на сервер JSON с получением от сервера JSON.

Также в URL при отправке AJAX не надо указывать localhost. Страница сама знает структуру своего сайта.
Например, /api.json означает, что в корне сайта url.pathname равно api.json
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
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
</head>
<body>
    <script>
        $.ajax({
            url: "/api.json", // В корне сайта. localhost указывать нельзя
            method: "POST",
            // contentType (default: 'application/x-www-form-urlencoded; charset=UTF-8')
            data: { command: "GetDriverInfo" }, // по умолчанию в формате application/x-www-form-urlencoded
            dataType: "json", // тип данных, который вы ожидаете получить от сервера
            success(response) {
                console.log(response.driverVer);
            },
            error(xhr) {
                console.log(`${xhr.status}: ${xhr.statusText}`);
            }
        });
    </script>
</body>
</html>
Отправляет на сервер заголовок запроса :
application/x-www-form-urlencoded; charset=UTF-8
и тело запроса:
command=GetDriverInfo
Получение стандартного POST-запроса в PHP:
PHP
1
$postdata = $_POST["command"];
А если мы хотим отправить команду на сервер в виде JSON, то:
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
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
</head>
<body>
 
    <script>
        $.ajax({
            url: "/api.json", // В корне сайта. localhost указывать нельзя
            method: "POST",
            contentType: "application/json; charset=UTF-8", // тип данных, отправляемых на сервер
            // Отправка строки автоматически отключает принудительное 
            // преобразование в x-www-form-urlencoded
            data: JSON.stringify({ command: "GetDriverInfo" }), // в формате application/json
            dataType: "json", // тип данных, который вы ожидаете получить от сервера
            success(response) {
                console.log(response.driverVer);
            },
            error(xhr) {
                console.log(`${xhr.status}: ${xhr.statusText}`);
            }
        });
    </script>
</body>
</html>
Отправляет на сервер заголовок запроса :
application/json; charset=UTF-8
и тело запроса:
{"command":"GetDriverInfo"}
Получаем сырую строку в PHP:
PHP
1
$postData = file_get_contents('php://input');
Если потом нужно декодировать в объект: $d = json_decode($postData, true);
1
0 / 0 / 0
Регистрация: 18.01.2021
Сообщений: 2
21.01.2021, 21:35  [ТС]
amr-now Спасибо, понял что не так делал. Остался один вопрос: почему-то при выполнении запроса он не работает ни в одном из браузеров кроме хрома, запущенного с параметрами "chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security" Я думаю здесь ключевой параметр "disable-web-security". Хром в стандартном режиме выдает в консоли "POST http://127.0.0.1:50010/api.json net::ERR_EMPTY_RESPONSE" Мозилла выдает "Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на http://127.0.0.1:50010/api.json. (Причина: не удалось выполнить запрос CORS)."
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
22.01.2021, 04:57
Цитата Сообщение от evbazanov Посмотреть сообщение
почему-то при выполнении запроса он не работает ни в одном из браузеров кроме хрома, запущенного с параметрами "chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security"
Потому что эта страница с данным JS-скриптом должна быть частью сайта.

Допустим, на сайте два файла:
page.html - эта страница
data.json - файл с данными. page.html загружает его аяксом.
Сервер должен быть запущен.
Тогда в браузере в адресной строке набираем:
localhost:порт, на котором запущен сервер/page.html

И тогда страница, запущенная непосредственно из сервера, нормально отработает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.01.2021, 04:57
Помогаю со студенческими работами здесь

Перенос с удаленного сервера на localhost
Здравствуйте.Возникла необходимость перенести сайт на localhost(пользуюсь денвером).Перенес резервную копию в корень,запустил...

Редирект со страницы сайта на localhost сервера
Всем привет. В общем, у меня есть дашборд (Grafana), который запущен на localhost:3000. Еще есть IIS. Могу ли я сделать так, что бы при...

OpenVPN и доступ к порту сервера на localhost
Всем привет. Впервые пытаюсь настроить OpenVPN. Успешно поднял сервер и подключился к нему клиентом - с этим разобрался с помощью...

Post json и не только json запрос по нажатию кнопки
код кнопки: private void materialRaisedButton1_Click(object sender, EventArgs e) { int count =...

Разместил файлы Angular-2 на хостинге не работает http://localhost (json server)
Всем привет! Разместил проект по Angular 2 на сайте. Репозиторий проекта на GitHub: https://github.com/freestyle2018/angular-ivan ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru