Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: работа с json файлом

ребята, такая проблема с json файлами не работал нужна помощь, есть условие для кнопки «ФИО», при нажатии правее этой кнопки должно создаться поле ввода, при нажатии на клавиши в котором, снизу появляется автокомплит со списком из фамилий, хранящихся в файле surnames.json в папке проекта.
<div class="row" style="padding-top:20px">
                        <div class="row-sp creatjq" style="width:80%">
                            <button id="fio">ФИО</button></div>                         
                    </div>

Скрипт на появление input
$(document).ready(function(){
	var buttoninput = $('#fio');
	buttoninput.click(function(e){
		e.preventDefault();
		var inputcreat = $('.creatjq');
		inputcreat.append('<input type ="text" class="jsonform">');
	})
});

Попытался реализовать чтение и выборку из json пока по клику на кнопку которая отображает данные в блок с классом
<div class="row">
                        <div class="form_1_button-panel">
                            <button id="send">Отправить</button>
                        </div>
                    </div>

$("#send").click(function(e) {
			e.preventDefault();
			 $.ajax({
             url:"surnames.json",
             dataType: "json",
          success:function() {
            $.getJSON('surnames.json',function (data) {
              for(var i = 0; i<data.length;i++){
                $('.form_1_button-panel').append('<tr><td>' + data.last_name + '</td><td>' + data.name +
              '</td><td>' + data.patronymic + '</td></tr>');
              }
 
            })
 
          }
        })
    });
  });

подскажите как правильно работать с json файлом и как реализовать поле ввода с автокомплитом фамилий
Ответ: рони спасибо что подсказал. а я и не заметил
Вопрос: Конвертация строки типа json в массив javascript

тут получаю список имен из файла с помощью php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
 
    $testArray = array();
 
    $test = fopen("names.txt", "r");
 
    while(!feof($test)){
        $testArray[] = fgets($test) . '<br />';
        //echo fgets($test) . '<br />';
     }
 
 
  //$seq = array("foo", "bar", "baz", "blong");
    $seq = array($testArray);
 
  $json = json_encode($seq);  
     
 
?>

далее принимаю строку в яваскрипте и сохраняю её в переменную names.
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var names = '<?php echo $json;?>';
document.write(names);
 
document.write('<br />');
 
//document.write(typeof(names));
 
var arrayOfNames =  new Array();
 
 
arrayOfNames = JSON.parse(names);   <=== тут не срабатывает JSON.parse из-за этого массив пустой.
 
document.write('<br />');
 
document.write(typeof(arrayOfNames));
как мне передать данные из строки json в массив javascript ?
Ответ: eluzor, возможно, вам не стоит брать <?php echo $json;?> в кавычки, потому что это уже есть строка. Допускаю, что из-за этого и сбивается json-парсер JS.
Вопрос: Запись в json файл по средством jquery

Привет ребята подскажите как записать в json файл, с помощью js.
Есть простая формочка состоящая из одного поля.
например :

<textarea>Внести эту надпись в json</textarea>
<input type = 'submit' value = 'send'>


Нужно чтобы результат записался в json файл который лежит в одной папки с этой страничкой.
Ответ: fso = new ActiveXObject("Scripting.FileSystemObject");

Это будет работать в IE, и то как локальным приложением, иначе будут предупреждения.
Вопрос: Json файл

Подскажите как пройтись по json файлу в js

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[
  {
    "userId": 1,
    "id": 1,
    "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
    "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
  },
  {
    "userId": 1,
    "id": 2,
    "title": "qui est esse",
    "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
  },
  {
    "userId": 1,
    "id": 3,
    "title": "ea molestias quasi exercitationem repellat qui ipsa sit aut",
    "body": "et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut"
  }
]
Ответ: rav41k,

Javascript
1
2
3
4
var json = JSON.parse( 'переменная или строка json' );
json.forEach((item, index, json) => {
    console.log(`item: ${item}, index: ${index}`);
});
Вопрос: JSON Сериализация массива объектов

Есть скрипт, который передает сервису объект методом POST:
   var order = {
                "product_id": 1,
                "product_name": "name1"
            }
	

            $.ajax({
                type: "POST",
                url: "http://localhost/mb_services/Service.svc/GetOrder/?id=0",
                data: JSON.stringify(order),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                processData: true,
                success: function (data, status, jqXHR) {
                    alert("success..." + data);
                },
                error: function (xhr) {
                    alert(xhr.responseText);
                }
            });
        

Не могу понять, как передать массив объектов.
var order = {
                "product_id": [1,2,3],
                "product_name": ["name1","name2","name3"]
            }

Такой формирует некорректную строку JSON.
Ответ:
DmitriyVladimirovich
Не могу понять, как передать массив объектов.

Так:
var orders = [{
    "product_id": 1,
    "product_name": "name1"
}, {
    "product_id": 2,
    "product_name": "name2"
}, {
    "product_id": 3,
    "product_name": "name3"
}]
Вопрос: Сохранить значение переменной {...} на диск в виде json-файла.

Непосредственно задача:
  • Всё только на клиенте. Основной целевой браузер - Chrome.
  • Есть переменная-объект: var Test = {...};
  • Надо сохранить "её" в виде json-файла на диск. Желательно без дёргания пользователя.
  • P/S, а если решу оформить мою байду в виде расширения Chrome - появятся ли новые возможности?
Накопал в сети такое:
function objSave(Obj) {
  let Temp = document.createElement('A');
  Temp.href = 'data:application/octet-stream;charset=windows-1251,' + encodeURIComponent(JSON.stringify(Obj, null, 2));
  Temp.download = 'file_' + (Date.now() / 1000 | 0) + '.json';
  document.body.appendChild(Temp);
  Temp.click();
  document.body.removeChild(Temp);
};
Оно даже работало, пока объект был мелким.
Но когда объект серьёзно "распух", Chrome вместо скачивания стал писать:
Цитата:
Без названия
Ошибка: Ошибка сети.
Подскажите пожалуйста, что с этим можно придумать...
Ответ: Aetae,
Поправил, хорошее замечание
Вопрос: Вывод json файла

Есть json файл - table_push.json с содержимым:
JSON
1
[{"id":"12","firstName":"Stepan","secondName":"BlaBla","email":"stepa@mail.ru"},{"id":"13","firstName":"dscdsc","secondName":"qweqwe","email":"stepka@mail.ru"},{"id":"14","firstName":"Andrey","secondName":"Volkov","email":"andrey@gmail.com"},{"id":"15","firstName":"dscdsc","secondName":"qweqwe","email":"sadasd900@gmail.com"},{"id":"25","firstName":"dscdsc","secondName":"qwdqwd","email":"sasdsad@mail.ru"}]
Пытаюсь вывести содержимое этого файла на страницу в таблицу, но как то не выходит.Консоль ругается на кусок кода, где цикл


Вот код на jquery:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$(document).ready(function(){
      $.ajax({
             url:"table_push.json",
             dataType: "json",
          success:function() {
            $.getJSON('table_push.json',function (data) {
              for(var i = 0; i<data.Object.length;i++){
                $('#users').append('<tr><td>' + data.Object[i].id + '</td><td>' + data.Object[i].firstName +
              '</td><td>' + data.Object[i].secondName + '</td><td>'+ data.Object[i].email+'</td></tr>');
              }
 
            })
 
          }
        })
});
Ответ: Разобрался. Нужно просто удалить слово "Object " . Если вдруг у кого есть идеи по лучше, может быть я делаю не правильно, готов узнать.
Вопрос: Чтение json файла

Необходимо вывести содержимое json-файла на странице. Папка проекта лежит на компьютере
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
initJson: function () {
            $.ajax({
                url: 'persons.json',
                dataType: "json",
                success: function (data) {
                    dataObj = data;
                    console.log(testProject.data);
                    testProject.render();
                }
 
            });
 
        },
 
          render: function () {
            $.each(dataObj.items, function(index, value){
                $('.body').append('<p>' + value.name + value.lastname + value.description + value.dateofstart +value.dateofend +  '</p>')
            });
        },
Возникает ошибка
XMLHttpRequest cannot load file:///C:/Users/Diana/PhpstormProjects/test_2/persons.json. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.
Что я делаю не так?
Ответ: diana199466, вы ссылку посмотрели?
нет не посмотрела
ну посмотрите, там достаточно ясно описана данная проблема

а решения у данной проблемы нету, потому что file: вообще не имеет права посылать ajax запросы
это небезопасно
так что лучше использовать кнопки в шторме, он благо имеет встроенный веб сервер
Вопрос: Как простроить таблицу по json?

Привет, форум.
Есть задача по данным из json построить таблицу, и вставить в DOM дерево.
Json представляет из себя массив объектов вида:
[{"ip":"::1","time":"2016-12-17 12:12:59","request":"GET /insert HTTP/1.1","name":"access.log"},
{"ip":"::1","time":"2016-12-17 12:12:59","request":"GET /insert HTTP/1.1","name":"access.log"},
{"ip":"::1","time":"2016-12-17 12:12:59","request":"GET /insert HTTP/1.1","name":"access.log"},
{"ip":"::1","time":"2016-12-17 12:12:59","request":"GET /insert HTTP/1.1","name":"access.log"}
]

Туплю, не могу понять, как мне получить доступ к свойствам объекта.
Т.е. в общем алгоритм такой:
1) Создать таблицу
2) Создать DOM элемент строку таблицы
3) Получить объект
4) распарсить
5) распихать данные из объекта в строку
6) добавить строку в таблицу
7) повторять действия 2-6, пока есть объекты в json.
8) Добавить таблицу в DOM
Ответ:
Сообщение от Proudmore
алгоритм такой
1) распарсить JSON
2) создать таблицу
3) создать строку таблицы
4) получить объект из массива
5) распихать данные из объекта в строку
6) добавить строку в таблицу
7) повторять действия 3-6, пока есть объекты в массиве
8) добавить таблицу в DOM
Вопрос: ПОМОЩЬ С JSON

Есть JSON файл:
{
	"1" : {
		"name" : "ЗАМКИ ВРЕЗНЫЕ",
		"image" : "../images/products/padlocks/padlock_1.jpg",
		"href" : "../products/vreznie.php",
		"items" : {
			"1" : {
				"name" : "ЗАМОК 15-01",
				"image" : "../images/products/padlocks/padlock_1.jpg",
				"color" : "black",
				"size" : "30м",
				"cost" : "3$"
			},
			"2" : {
				"name" : "ЗАМКИ 15-02",
				"image" : "../images/products/padlocks/padlock_1.jpg",
				"color" : "black",
				"size" : "30м",
				"cost" : "3$"
			}
		}
	},
	"2" : {
		"name" : "ЗАМКИ НАВЕСНЫЕ",
		"image" : "../images/products/padlocks/padlock_2.jpg",
		"href" : "../products/padlock.php",
		"items" : {
			"1" : {
				"name" : "ЗАМОК 16-01",
				"image" : "../images/products/padlocks/padlock_1.jpg",
				"color" : "black",
				"size" : "30м",
				"cost" : "3$"
			},
			"2" : {
				"name" : "ЗАМКИ 16-02",
				"image" : "../images/products/padlocks/padlock_1.jpg",
				"color" : "black",
				"size" : "30м",
				"cost" : "3$"
			},
		}
	},
	"3" : {
		"name" : "ЗАМКИ НАКЛАДНЫЕ",
		"image" : "../images/products/padlocks/padlock_3.jpg",
		"href" : "../products/nakladnie.php",
		"items" : {
			"1" : {
				"name" : "ЗАМОК 17-01",
				"image" : "../images/products/padlocks/padlock_1.jpg",
				"color" : "black",
				"size" : "30м",
				"cost" : "3$"
			},
			"2" : {
				"name" : "ЗАМКИ 17-02",
				"image" : "../images/products/padlocks/padlock_1.jpg",
				"color" : "black",
				"size" : "30м",
				"cost" : "3$"
			},
		}
	}
}


Есть парсер этого файла:
$.getJSON("../databases/goods/padlock.json", function (data) {
var goods = data;

var out = '';

for (var key in cart) {
	out += '<div class="single_goods" style="padding-right: 0px; padding-left: 0px;">';
	out += '<b>' + goods[key].name + '</b>';
	out += '<button type="button" class="btn btn-danger delete" data-art="' + key + '" style="border-radius: 0;">X</button>';
	out += '<img src="' + goods[key].image + '">'; 
	out += '<p> Размер: ' + goods[key].size + '</p>';
	out += '<p> Цвет: ' + goods[key].color + '</p>';
	out += '<p> Кол-во: <span class="btn-group" role="group" aria-label="...">' + '<button data-art="' + key + '" class="minus many btn btn-default"> - </button>' + '<button class="many btn btn-default">'+ cart[key] + '</button>'+'<button class="plus many btn btn-default" data-art="' + key + '"> + </button>' + '</span> </p>'
	out += '<div class="btn-group" style="width: 100%;">';
	out += '<button type="button" class="btn btn-warning cost add" style="width: 100%; font-size: 1.7rem;""> Цена: ' + cart[key] * goods[key].cost +  '$</button>';
	out += '</div>';
	out += '</div>';
}
$('#my-cart').html(out);

});


Вопрос: как мне указать парсеру на массив items? Тоесть парсить items у кажого объекта?
Ответ:
Сообщение от АнонимныйПарень
как мне указать парсеру на массив items?
Это не массив, это объект и парсить его не надо, метод $.getJSON() возвращает готовый объект коим у вас будет data (можно сразу с ним и работать, а var goods = data просто бесполезная операция). Обходите данный объект в цикле, получая его свойства, в том числе и items.