Проблема с доступом к значениям json в jquery

#jquery #json

#jquery #json

Вопрос:

Это моя строка JSON:

 {"success":true,"docSearch":
 [
  {"fName":"Sam",
   "lName":"Mehra",
   "email":"samanyumehra20000@gmail.com",
   "mobile":"7859857230",
   "userImage":"IMG/patient.png",
   "address":"412/A Ganesh Nagar 2 gali no.1 Laxmi Nagar Near Ajay cycles, Mona Pg",
   "special":"Allergist, Dentist, Anesthesiologist, Cardiologist",
   "deg":"MBBS, BDS, BAMS, BUMS","experience":"3","fees":"3"},
   {"fName":"Samanyu",
    "lName":"Mehra",
    "email":"samanyumehra20000@gmail.com",
    "mobile":"7859857230",
    "userImage":"IMG/regis.jpg",
    "address":"412/A Ganesh Nagar 2 gali no.1 Laxmi Nagar Near Ajay cycles, Mona Pg",
    "special":"Allergist, Dentist, Anesthesiologist, Cardiologist, Dermatologist",
    "deg":"MBBS, BDS, BAMS, BUMS, BHMS, BYNS",
    "experience":"3",
    "fees":"3"
    }
  ]
}
  

Я хочу получить доступ к значениям в jQuery.До сих пор я делал это:

 success: function(data,textStatus,jqXHR){
            if(data.success){
                var img=document.createElement('img');
                $(data).each(function(index,item){
                $("#ajaxResponse").html("");
                $("#ajaxResponse").append("<b>First Name:</b> "   data.docSearch[index].fName "<br>");
                $("#ajaxResponse").append("<b>Last Name:</b> "   data.docSearch[index].lName "<br>");
                $("#ajaxResponse").append("<b>Email:</b> "   data.docSearch[index].email "<br>");
                $("#ajaxResponse").append("<b>Experience:</b> "   data.docSearch[index].experience "<br>");
                $("#ajaxResponse").append("<b>Fees:</b> "   data.docSearch[index].fees "<br>");
                img.src=data.docSearch[index].userImage;
                $("#ajaxResponse").append(img);
                });
            } 
  

Если кто-нибудь, читающий это, знает, как получить доступ к строкам JSON, подобным этому, пожалуйста, помогите мне.
Примечание: Эта строка JSON также может содержать 1 значение, например:

     {"success":true,"docSearch":
 [
  {"fName":"Sam",
   "lName":"Mehra",
   "email":"samanyumehra20000@gmail.com",
   "mobile":"7859857230",
   "userImage":"IMG/patient.png",
   "address":"412/A Ganesh Nagar 2 gali no.1 Laxmi Nagar Near Ajay cycles, Mona Pg",
   "special":"Allergist, Dentist, Anesthesiologist, Cardiologist",
   "deg":"MBBS, BDS, BAMS, BUMS","experience":"3","fees":"3"}
]
    }
  

РЕДАКТИРОВАТЬ 1:

     success: function(data,textStatus,jqXHR){
        //doc Name was correct so we have some information to display   
        if(data.success){
            var img=document.createElement('img');
            var br=document.createElement('br');
            $("#ajaxResponse").html("");
            $(data.docSearch).each(function(index,item){
            $("#ajaxResponse").append("<b>First Name:</b> "   item.fName "<br>");
            $("#ajaxResponse").append("<b>Last Name:</b> "   item.lName "<br>");
            $("#ajaxResponse").append("<b>Email:</b> "   item.email "<br>");
            $("#ajaxResponse").append("<b>Usernames:</b> "   item.username "<br>");
            $("#ajaxResponse").append("<b>Experience:</b> "   item.experience "<br>");
            $("#ajaxResponse").append("<b>Fees:</b> "   item.fees "<br>");
            img.src=item.userImage;
            $("#ajaxResponse").append(img);
            $("#ajaxResponse").append(br);
            });
        } 
             //display error message
             else {
                 $("#ajaxResponse").html("<div><b>No Record Found!!</b></div>");
             }
        },
  

Я добавил тег <‘br’>, чтобы между отображаемым содержимым был разрыв строки, но разрыва строки нет, и он также не отображает 2 изображения. Для первой итерации он просто считывает его и оставляет только так, а для 2-й итерации он отображает изображение. Я хочу, чтобы оба изображения отображали данные 2. Пожалуйста, ПОМОГИТЕ!!

РЕДАКТИРОВАТЬ 2: моя проблема была решена путем сохранения var img=document.createElement('img'); в цикле, чтобы всякий раз, когда он задает путь для изображения, он отображал изображение.

Комментарии:

1. Не могли бы вы сказать мне, что такое ` $ (d)`!!

2. Привет, что $(d) здесь? Разве это не должно быть $(data).. ?

3. Привет, на самом деле, я использовал JSON.stringfy для проверки строки JSON, поэтому я использовал d там, я провел некоторую отладку, поэтому я использовал d, но я отредактировал его. Если я анализирую JSON, я получаю сообщение об ошибке, и когда я пытаюсь его распечатать, он выдает мне «object Object», поэтому я предполагаю, что jquery проанализировал его автоматически. Это просто заметка для вас, ребята. Если вы можете попытаться решить это, пожалуйста, сделайте, мне это действительно нужно. Я просто хочу получить доступ к данным из JSON, и это может быть 1 строка, 2 строки, 3 строки и т. Д. Вот почему мне нужен массив для доступа к нему.

4. Привет, ваш код работает нормально, проверьте это . Вы добавили dataType: "json" в свой ajax?

5. Поместите эти var img=document.createElement('img'); var br=document.createElement('br'); строки в каждый цикл, который должен работать.

Ответ №1:

Вы используете цикл foreach для неправильной переменной. Используйте цикл foreach для data.docSearch , а не для data .

 var data = {"success":true,"docSearch":
 [
  {"fName":"Sam",
   "lName":"Mehra",
   "email":"samanyumehra20000@gmail.com",
   "mobile":"7859857230",
   "userImage":"IMG/patient.png",
   "address":"412/A Ganesh Nagar 2 gali no.1 Laxmi Nagar Near Ajay cycles, Mona Pg",
   "special":"Allergist, Dentist, Anesthesiologist, Cardiologist",
   "deg":"MBBS, BDS, BAMS, BUMS","experience":"3","fees":"3"},
   {"fName":"Samanyu",
    "lName":"Mehra",
    "email":"samanyumehra20000@gmail.com",
    "mobile":"7859857230",
    "userImage":"IMG/regis.jpg",
    "address":"412/A Ganesh Nagar 2 gali no.1 Laxmi Nagar Near Ajay cycles, Mona Pg",
    "special":"Allergist, Dentist, Anesthesiologist, Cardiologist, Dermatologist",
    "deg":"MBBS, BDS, BAMS, BUMS, BHMS, BYNS",
    "experience":"3",
    "fees":"3"
    },{"fName":"Sandeep",
   "lName":"Mehra",
   "email":"samanyumehra20000@gmail.com",
   "mobile":"7859857230",
   "userImage":"IMG/patient.png",
   "address":"412/A Ganesh Nagar 2 gali no.1 Laxmi Nagar Near Ajay cycles, Mona Pg",
   "special":"Allergist, Dentist, Anesthesiologist, Cardiologist",
   "deg":"MBBS, BDS, BAMS, BUMS","experience":"3","fees":"3"},
   {"fName":"Samanyu",
    "lName":"Mehra",
    "email":"samanyumehra20000@gmail.com",
    "mobile":"7859857230",
    "userImage":"IMG/regis.jpg",
    "address":"412/A Ganesh Nagar 2 gali no.1 Laxmi Nagar Near Ajay cycles, Mona Pg",
    "special":"Allergist, Dentist, Anesthesiologist, Cardiologist, Dermatologist",
    "deg":"MBBS, BDS, BAMS, BUMS, BHMS, BYNS",
    "experience":"3",
    "fees":"3"
    }
  ]
}


$(data.docSearch).each(function(index,item){
                console.log(item.fName);
                });  
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>