переменная не видна, которая получает значение в одном цикле, и доступ в другом цикле в ajax - PullRequest
0 голосов
/ 23 июня 2011
$(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;
     }
  });

в этом uid [], который получает значение в

$.each(newresult.response.docs, function(i,item){

                        uid[i]=item.UID_PK;
      });

я хочу получить доступ к этому uid [] в следующем цикле

$. Каждый (newresult.highlighting, function (i, item1) {

                alert(uid[i]);
            });

но uid [] не отображается во втором цикле each (), предупреждение показывает здесь неопределенное. почему так ?? что мне нужно сделать, чтобы сделать uid [] видимым во 2-м цикле.

1 Ответ

0 голосов
/ 23 июня 2011

Один тест, чтобы убедиться, что проблема кроется где-то в другом месте:

1) Вы уверены, что item.UID_PK содержит что-то? Чтобы быть уверенным, сделайте это:

$.each(newresult.response.docs, function(i,item){

                        uid[i]=item.UID_PK;
                         alert(item.UID_PK);

      });

Кроме того, чтоВы итерируете? Является ли элемент Объектом?

РЕДАКТИРОВАТЬ - если посмотреть на то, в чем заключается ваш json, то проблема заключается в том, что каждый второй вы перебираете объект, и поэтому ваш индекс (i) является свойством.(в вашем случае я равен 8252 и 8142), поэтому вы обращаетесь к uid [8152] и uid [8142].

я бы сделал что-то вроде этого:

var uid;
$.each(newresult.response.docs, function(i,item){
                  uid=newresult.highlighting[item.UID_PK];
                      $.each(uid, function(l, desc){
                              alert(desc[0]);
                       });

           });

alertsand <em>elegant</em> design was finely crafted in Japan. и This <em>elegant</em> ring has an Akoya cultured pearl with a band of bezel-set round diamonds making

посмотрите на скрипку: http://jsfiddle.net/r6ZvT/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...