Как правильно проанализировать файл JSON, чтобы использовать его через метод JQuery Ajax? - PullRequest
0 голосов
/ 03 июня 2019

Я создал следующий массив JSON :

[
  {
    "nome": "Aldo Maria",
    "indirizzo": "Viale Europa 1",
    "telefono": "3397889034"
  },
  {
    "nome": "Maria13",
    "indirizzo": "Viale Europa 1",
    "telefono": "3397889034"
  }
]

, и у меня есть файл Javascript, в котором я хочу циклически обработать два элемента этого массива. Я хочу сделать это, используя JQuery Ajax метод объяснил здесь .

Другими словами, я должен был использовать следующий синтаксис:

$ (селектор) .getJSON (URL, данные, успех (данные, статус, XHR))

Я пытаюсь применить это и записал следующий фрагмент в мой файл javascrpt, где я хочу циклически преобразовать элементы массива JSON, чтобы отобразить таблицу, в которой пользователь получает данные об имени, адресе и телефоне. количество других людей):

function validateTelefono () { setTimeout (function () {

   var data = JSON.parse(data);

   $.getJSON("I wrote the patthern of the JSON file 
              here", 
   function(){
      for (var i=0;  i < data.length; i++){
        $("#tbody").append("<tr>");
        $("#tbody").append("<td>" + data.nome[i] + "</td>");
        $("#tbody").append("<td>" + data.indirizzo[i] + "</td>");
        $("#tbody").append("<td>" + data.telefono[i] + "</td>");
        $("#tbody").append("</tr>");                        
                }
            );

Для полноты, это весь код:

function validateTelefono() {


    console.log("function validateTelefono has been activated");
    if ($("#inlineFormInputTelefono").val() == "") {
        $("#errorLogTelefono").show();
    } else {
        $("#errorLogTelefono").hide();

        $("#cercaTelefono").prop("disabled", true);

        $("#tbody").empty();


        setTimeout(function () {

               var data = JSON.parse(data);

            $.getJSON(
                "D:\Unknown\array.json",

                //success
                function(){
                    console.log(data);

                    for (var i=0;    i < data.length; i++){       
                        $("#tbody").append("<tr>");
                        $("#tbody").append("<td>" + data.nome[i] + "</td>");
                        $("#tbody").append("<td>" + data.indirizzo[i] + "</td>");
                        $("#tbody").append("<td>" + data.telefono[i] + "</td>");
                        $("#tbody").append("</tr>");
                    }
                }
            );

            $("#tabella").show();

            $("#cercaTelefono").prop("disabled", false);
        }, 1000);
    }
}

При открытии страницы в браузере я получаю:

Uncaught SyntaxError: Неожиданный токен u в JSON в позиции 0 в JSON.parse ()

Это относится к следующей строке кода:

            var data = JSON.parse(data);

Полагаю, ошибка - это data в скобках.

Что я должен написать вместо "data" ? Или есть какая-то другая причина, по которой метод Jquery не работает?

          • решена задача - - - - - ->

1) Я удалил следующую строку кода, и сообщение об ошибке выше исчезло (спасибо за предложение):

var data = JSON.parse(data);

Вместо этого я получил эту другую ошибку:

enter image description here

Это было вызвано синтаксисом URL в параметре url метода getJSON: весь путь ( "D: ​​\ Unknown \ array.json" ) не был распознан поскольку он не находится «внутри» папки, в которой находится мой файл JavaScript («Неизвестно»); вместо этого он ссылается на внешнюю папку («D»). другими словами, я редактировал URL следующим образом:

"array.json"

" array.jason " находится в той же папке файла javascript ("Unknown"), которым он был использован. Таким образом, правильный синтаксис всего фрагмента следующий:

$.getJSON(

                "array.json",

                function(data){

                    for (var i=0; i < data.length; i++){                        

                        $("#tbody").append("<tr>");
                        $("#tbody").append("<td>" + data[i].nome + "</td>");
                        $("#tbody").append("<td>" + data[i].indirizzo + "</td>");
                        $("#tbody").append("<td>" + data[i].telefono + "</td>");
                        $("#tbody").append("</tr>");
                    }
                }
            );

Ответы [ 2 ]

1 голос
/ 03 июня 2019

Нет необходимости анализировать как JSON, поскольку он уже находится в формате JSON.Но не забывайте, что запрос возвращает массив, поэтому (учтите, что data.key [i] изменится на data [i] .key):

 $.getJSON("URL-TO-JSON", 
       function(data){
          for (var i=0;  i < data.length; i++){
            $("#tbody").append("<tr>");
            $("#tbody").append("<td>" + data[i].nome + "</td>");
            $("#tbody").append("<td>" + data[i].indirizzo + "</td>");
            $("#tbody").append("<td>" + data[i].telefono + "</td>");
            $("#tbody").append("</tr>");                        
          }
    });
0 голосов
/ 03 июня 2019

Ошибка Uncaught SyntaxError: Unexpected token u in JSON at position 0 at JSON.parse () вызвана путем к файлу json.Вы должны записать его как \\, потому что \ инициирует escape-последовательность.Итак, вы в настоящее время пытаетесь избежать U в Unknown.

...