variable is not visible which gets the value in one loop ,and access in another loop in ajax
$(document).ready(function(){ // This function get the search results from Solr server $("#submit").click(function(){ var query=getquerystring() ; //get the query string entered by user // get the JSON response from solr server var newquery=query; $.ajax({ url: "http://192.168.1.9:8983/solr/db/select/?wt=json&&start=0&rows=100&q="+query+"&spellcheck=true&json.wrf=?", async:false, dataType: 'json', success: function(newresult){ var html="<table><tr>" var count=0; var alt="NoImage"; var size="3pt"; var id; var flag=1; // Flag for error messages border="1"; var n=newresult.response.numFound var uid=new Array(n); // If no search results if(newresult.response.numFound==0) { var msg= "<hr /><font size="+size+" >We're sorry, we found no results for <b>"+document.getElementById("queryString").value+"</font><hr />"; } else { /* var msg= "<hr /><font size="+size+" >Total Results Found <b> "+ result.response.numFound+"</b> for "+"<b>"+document.getElementById("queryString").value+"</b> keyword</font><hr /> ";*/ // Parse solr response and display it on web page $.each(newresult.response.docs, function(i,item){ uid[i]=item.UID_PK; }); $.each(newresult.highlighting, function(i,item1){ alert(uid[i]); }); } }); }); // get the query string entered by user function getquerystring() { var query=document.getElementById("queryString").value; //qstr = escape(query); return query; } });
in this uid[] which gets the value in
$.each(newresult.response.docs, function(i,item){ uid[i]=item.UID_PK; });
i want to access this uid[] in next loop
$.each(newresult.highlighting, function(i,item1){
alert(uid[i]); });
but uid[] is not visible in 2nd each() loop, the alert shows undefined here. why is so?? what i need to do to make uid[] visible in 2nd loop.
Answers
One test to be sure that the problem lies somewhere else:
1)are you sure that item.UID_PK contains something?To be sure do this:
$.each(newresult.response.docs, function(i,item){ uid[i]=item.UID_PK; alert(item.UID_PK); });
Moreover what are you iterating on?is item an Object?
EDIT - looking at what your json is the problem is that in you second each you are iterating over an object and so your index (i) is a property. (in your case i is equal to 8252 and 8142) so you are accessing uid[8152] and uid[8142].
i'd do something like this:
var uid; $.each(newresult.response.docs, function(i,item){ uid=newresult.highlighting[item.UID_PK]; $.each(uid, function(l, desc){ alert(desc[0]); }); });
alerts and <em>elegant</em> design was finely crafted in Japan. and This <em>elegant</em> ring has an Akoya cultured pearl with a band of bezel-set round diamonds making
look at the fiddle: http://jsfiddle.net/r6ZvT/