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

Как запустить ajax, чтобы можно было записать данные в json?

18.08.2022, 18:39. Показов 486. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь отправить данные на сервер, в итоге получаю ошибку.

SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data
Как запустить скрипт, чтобы можно было записать данные в json? Уже все перепробовала примеры в интернете не работают, обязательно появляются какие-то ошибки.

Мой код:
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
51
52
53
54
55
56
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<script src="jquery-1.9.1.js"></script>
<title>Example Json</title>
</head>
 
<body>
 
  <h1> Простая форма для проверки работы JSON </h1>
  <!-- делаем форму с полями ввода -->
  <p>
    <input type="text" id="name" placeholder="Ваше имя">
    <input type="text" id="lastname" placeholder="и фамилия">
    <!-- по нажатию на эту кнопку данные уйдут на сервер -->
    <button onclick="sendJSON()">Проверить JSON</button>
   
<script>
 
 
function sendJSON()
  {
 
var xhr = new XMLHttpRequest(),
    jsonArr,
    method = "GET",
    jsonRequestURL = "./jsonFile.txt";
 
xhr.open(method, jsonRequestURL, true);
xhr.onreadystatechange = function()
{
    
    if(xhr.readyState == 4 && xhr.status == 200)
    {
       xhr.open("POST", '/json.php', true);
        jsonArr = JSON.parse(xhr.responseText);
 
       
        jsonArr.push({"nissan": "sentra", "color": "green"});
 
       
        
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        
        xhr.send("jsonTxt="+JSON.stringify(jsonArr));
       
        
       
    }
};
xhr.send(null);
}
</script>
</body>
</html>
php-код
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
header("Content-Type: application/json");
 
$file = 'jsonFile.txt';
 
if($_SERVER['REQUEST_METHOD'] === 'POST')
 
{
    file_put_contents($file, $_POST["jsonTxt"]);
   
}
else if($_SERVER['REQUEST_METHOD'] === 'GET')
 
{
    echo file_get_contents($file);
    
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.08.2022, 18:39
Ответы с готовыми решениями:

Как создать консольное приложение, чтобы можно было его запустить?
У меня Visual Studio 2019. Мне уже объясняли, что создавать проект надо под приложение, а не под библиотеку, но там даётся только выбор...

Как можно зашифровать на андроид клиенте данные, чтобы на сервере windows можно было их расшифровать?
У меня есть TCP клиент под андроид на JAVA и TCP сервер windows С++. TCP протокол открытый. Я знаю есть библиотека java crypto и OPenSSL....

Нарисовала фигуры на QGraphicsScene. Как их сохранить в XML, JSON чтобы потом можно было их открыть?
подскажите как QGraphicsScene сохранить в XML и JSON чтобы потом можно было их открыть? к примеру рисую просто линию QGraphicsView...

2
Молодой техлид)
Эксперт JSЭксперт HTML/CSS
 Аватар для mr_dramm
1818 / 1056 / 329
Регистрация: 17.07.2021
Сообщений: 2,147
Записей в блоге: 14
18.08.2022, 23:37
Цитата Сообщение от Katerina1993 Посмотреть сообщение
Как запустить скрипт, чтобы можно было записать данные в json? Уже все перепробовала примеры в интернете не работают, обязательно появляются какие-то ошибки.
нужно чтобы клиент и сервер работали с одним типом данных, в Вашем случае вы хотите получить в браузере JSON

Цитата Сообщение от Katerina1993 Посмотреть сообщение
jsonArr = JSON.parse(xhr.responseText);
но отправляете результат работы file_get_contents

PHP
1
echo file_get_contents($file);
нужно установить заголовок отправки данных JSON

PHP
1
header('Content-Type: application/json; charset=utf-8');
и закодировать все это в json

PHP/HTML
1
 json_encode([ 'filedata' => file_get_contents($file) ]);
Что то вроде этого должно получиться

PHP
1
2
3
4
5
else if($_SERVER['REQUEST_METHOD'] === 'GET')
{
    header('Content-Type: application/json; charset=utf-8');
    echo json_encode([ 'filedata' => file_get_contents($file) ]);
}
Добавлено через 5 минут
И кстати JSON.parse вернет объект, а ку него нет метода push

Добавлено через 3 минуты
Попробуйте для тачала передать и поработать с чем то более простым чем файлы, например отправьте в браузер строку

PHP
1
2
3
4
5
else if($_SERVER['REQUEST_METHOD'] === 'GET')
{
    header('Content-Type: application/json; charset=utf-8');
    echo json_encode([ 'data' => "hello" ]);
}
и прочитайте data на клиенте, как только будет прогресс переходите к файлам
0
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
19.08.2022, 18:24  [ТС]
Написала простой пример, работает.
Код клиента:
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
<!DOCTYPE html>
<html>
<head>
  <title>
    Отправляем JSON-данные на сервер
  </title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
</head>
 
<body>
  <script>
 jsontent = {"user":{
    "firstName":"Name1",
    "lastName":"Name2",
    "age":30
  }
  }
  
        const jsonString = JSON.stringify(jsontent);
        console.log(jsonString);
        const xhr = new XMLHttpRequest();
        xhr.open("POST",'action.php');
        xhr.setRequestHeader("Content-Type","application/json");
        xhr.send(jsonString);  
  </script>
</body>
 
</html>
Код сервера:
PHP
1
2
3
4
5
6
<?php
$requestPayload = file_get_contents("php://input");
$object = json_decode($requestPayload,true);
$myFile = "data.json";
file_put_contents($myFile,$requestPayload);
?>
Теперь данные передаются и записываются в файл.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.08.2022, 18:24
Помогаю со студенческими работами здесь

Как сделать, чтобы можно было удалять выведенные данные?
Здравствуйте, у меня есть форма поиска данных из бд, как сделать, чтобы можно было удалять выведенные данные с помощью php. fetch.php ...

Как записать, чтобы в объект Edit можно было ввести отрицательно число?
В объект Edit2 var Form1: TForm1; a,r:integer; l,s,v,p:real; implementation {$R *.dfm} procedure...

Как сделать, чтобы можно было записать не больше двух чисел в textbox?
Как сделать так чтобы можно было записать не больше двух чисел в textbox1 c# Добавлено через 8 минут Пробовал так водить только...

Как правильно записать данные в элемент на странице, чтоб в CodeBehind можно было прочитать?
Здравствуйте. На странице имеется такой элемент с атирбутами &lt;p id = &quot;documentID&quot; runat = &quot;server&quot;...

Как сделать, чтобы данные через TextBox можно было заносить в DataGridView
Как сделать, чтобы данные через TextBox можно было заносить в DataGridView... Приложил скрин экрана, посмотрите пожалуйста!


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru