मैं अजाक्स और जेसन के लिए नया हूँ। मैं जावा सर्वलेट से डेटा का अनुरोध करने के लिए अजाक्स का उपयोग कर रहा हूं और मुझे JSON सरणी मिल रही है। अब मैं इसे एक्सेस करने की कोशिश कर रहा हूं लेकिन यह अपरिभाषित दिखाता है। मैं एक छवि प्रदर्शित करने का भी प्रयास कर रहा हूं, मुझे डेटाबेस से छवि का नाम मिल रहा है और मैं सत्र चर के साथ छवि का पथ जोड़ रहा हूं।

जेएसपी फ़ाइल

<div class="search-container">
        <form id="form" name="form">
            <input type="text" id="docName" name="docSearch" placeholder="Search for any doctor by name..." style="width:30%">
            <button type="button" class="btn btn-success" id="mybtn" onclick="searchDoc()">Search</button>
        </form>
    </div>
    <br>
    <div id="img"></div>    

मेरा सर्वलेट

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Connection con = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        PrintWriter out=response.getWriter();
        HttpSession session=request.getSession(false);
        GetUserDetails details=new GetUserDetails();

        response.setContentType("application/json"); 

        String name=request.getParameter("val");
        String sql ="select fName,lName,exp,fees,user_img,username,mob,addr,email from users where fName='"+name+"'";
        String special="";
        String degree="";

        if(name==null||name.trim().equals(""))
            out.print("<p>Please enter name!</p>");
        else {
            List<Bean> docSearchList=new ArrayList<Bean>();
            try {
                con=DBConnection.createConnection();
                ps=con.prepareStatement(sql);
                rs=ps.executeQuery();
                while(rs.next()) {
                    List<String> list=details.getSpecialByUsername(rs.getString("username"));
                    special+=list.get(0);
                    for(String s:list) {
                        if(s.equals(special)) {}
                        else 
                            special+=", "+s;
                    }
                    list=details.getDegByUsername(rs.getString("username"));
                    degree+=list.get(0);
                    for(String s:list) {
                        if(s.equals(degree)) {}
                        else 
                            degree+=", "+s;
                    }
                    Bean docSearchBean=new Bean();
                    
                    docSearchBean.setfName(rs.getString("fName"));
                    docSearchBean.setlName(rs.getString("lName"));
                    docSearchBean.setExperience(rs.getString("exp"));
                    docSearchBean.setFees(rs.getString("fees"));
                    docSearchBean.setUserImage(session.getAttribute("patientSearchImage")+rs.getString("user_img"));
                    docSearchBean.setMobile(rs.getString("mob"));
                    docSearchBean.setAddress(rs.getString("addr"));
                    docSearchBean.setEmail(rs.getString("email"));
                    docSearchList.add(docSearchBean);
                }
            }catch (Exception e) {
                e.printStackTrace();
            }
            Gson gson=new Gson();
            JsonElement element=gson.toJsonTree(docSearchList,new TypeToken<List<Bean>>() {}.getType());
            
            JsonArray jsonArray=element.getAsJsonArray();
            response.setContentType("application/json");
            response.getWriter().print(jsonArray);
        } 
    }
}

मेरी जे एस फ़ाइल

function searchDoc() {
    var request = new XMLHttpRequest();
    var name = document.form.docSearch.value;
    var url = "/Doctor_Appointment_Application/PatientSearch?val=" + name;
    request.open("GET", url, true);
    request.responseType = 'text';
    request.send();
    
    try {
        request.onload = function() {
        var val = request.responseText;
        var targetDiv=document.getElementById("img").innerHTML=val;

/*      var parsed=JSON.parse(val);
*/              
        var image=document.createElement("img");
        image.src=val.img;
        image.className+="img";
        
        var targetDiv=document.getElementById("img");
        targetDiv.appendChild(image);

        
/*      console.log(parsed.img);
        console.log(parsed.fName);  
        console.log(parsed.lName);  
        console.log(parsed.username);
        console.log(parsed.exp);    
        console.log(parsed.fees);   
        console.log(parsed.special);    
        console.log(parsed.degree); 

        
        var p=document.createElement("p");
        p.innerHTML=parsed.fName;

        var p1=document.createElement("p");
        p1.innerHTML=parsed.lName;

        var p2=document.createElement("p");
        p2.innerHTML=parsed.username;

        var p3=document.createElement("p");
        p3.innerHTML=parsed.exp;

        var p4=document.createElement("p");
        p4.innerHTML=parsed.fees;

        var p5=document.createElement("p");
        p5.innerHTML=parsed.special;

        var p6=document.createElement("p");
        p6.innerHTML=parsed.degree;
                
        var targetDiv=document.getElementById("img");
        targetDiv.appendChild(image);
        targetDiv.appendChild(p);
        targetDiv.appendChild(p1);
        targetDiv.appendChild(p2);
        targetDiv.appendChild(p3);
        targetDiv.appendChild(p4);
        targetDiv.appendChild(p5);
        targetDiv.appendChild(p6);
*/              
            }//end of function 
        } catch (e) {
            alert("Unable to connect to server");
    }
}

मेरी JS फ़ाइल में, आप कुछ टिप्पणियाँ देख सकते हैं। मेरी टिप्पणियों में, मैंने जेएसओएन ऑब्जेक्ट को जेएस ऑब्जेक्ट में पार्स करने और इसे उस तरह से एक्सेस करने का प्रयास किया लेकिन यह अभी भी अपरिभाषित दिखाता है। सत्र चर में सहेजी गई छवि का पथ:- String patientSearchImage="IMG\\";

किसी भी सुझाव की सराहना की जाएगी। धन्यवाद :)

2
Samanyu Mehra 2 नवम्बर 2020, 12:06

1 उत्तर

सबसे बढ़िया उत्तर

मैंने इस त्रुटि को हल किया। मैं आपको यह बताने जा रहा हूं कि मैंने इसे कैसे किया ताकि आप इसका उल्लेख कर सकें। अगर आपके पास [{"fName":"Samanyu",,"lName":"Mehra"},{"fName":"Rajesh","lName":"Khanna"}] जैसे JSON ऐरे हैं। फिर आपको बस JSON ऑब्जेक्ट्स को पार्स करना होगा और फिर इसे लूप के साथ एक्सेस करना होगा।

var parsed=JSON.parse(val);
for(i in parsed){
    console.log(parsed[i]["fName"]);
}
0
Samanyu Mehra 2 नवम्बर 2020, 15:52