2014-10-07 2 views
0

Итак, пытаясь получить два запроса JSON после друг друга, и похоже, что javascript выполняет первый запрос, но даже не пытается выполнить второй.Вложенные запросы JSON в javascript

Итак, первый один спрашивает цветы, второй спрашивается значения, код выглядит следующим образом

(function() { 
    var mapKeyUrl = "/GenMap/getcountry/mapdata" 
    $.getJSON(mapKeyUrl, { 
     regsel: "${regsel}", 
     variable: "mapcolor" 
    }) 
    .done(function(coldata) { 
     console.log("JSON Data: " + coldata[1].value); 
     (function() { 
      mapKeyUrl = "/GenMap/getcountry/mapdata" 
      $.getJSON(mapKeyUrl, { 
       regsel: "${regsel}", 
       variable: "mapkey" 

      }) 
      .done(function(mapdata) { 
       console.log("JSON Map:" + mapdata) 
      }) 
     }) 

    }); 
})(); 

Оба запрос возвращает действительные данные в формате JSON, так mapcolor, например:

[{"class":"genmap.Mapconf","id":55,"map":"0","reg":"FATCA","value":"#F0F0F0","variable":"mapcolor"},{"class":"genmap.Mapconf","id":56,"map":"1","reg":"FATCA","value":"#66CCFF","variable":"mapcolor"},{"class":"genmap.Mapconf","id":57,"map":"2","reg":"FATCA","value":"#0000FF","variable":"mapcolor"},{"class":"genmap.Mapconf","id":58,"map":"3","reg":"FATCA","value":"#CC66FF","variable":"mapcolor"},{"class":"genmap.Mapconf","id":59,"map":"4","reg":"FATCA","value":"#9900CC","variable":"mapcolor"},{"class":"genmap.Mapconf","id":60,"map":"5","reg":"FATCA","value":"#7D7D7D","variable":"mapcolor"}] 

И mapkey возвращает аналогичный список.

Любые предложения, необходимо запустить три из них, и один у меня есть все данные, которые мне нужны для его рекомбинации.

+0

Вы пробовали переходить через код, чтобы узнать, что произойдет? – pquest

+0

Я предполагаю, что вы оказываетесь в обратном вызове 'fail' при первом вызове. Попробуйте добавить один – Johan

+0

Вы никогда не вызываете вторую функцию. В конце основной функции у вас есть '})();' с '()', чтобы ее вызвать, но в конце внутренней функции вы просто '})' – Stryner

ответ

2
(function() { 
    mapKeyUrl = "/GenMap/getcountry/mapdata" 
    //... 
}) 

Вы определяете функцию, но вы ее никогда не называете, поэтому она не запускается.

Поскольку нет никакого смысла в том, окружив его функции в любом случае, просто опускаем:

.done(function(coldata) { 
    console.log("JSON Data: " + coldata[1].value); 

    mapKeyUrl = "/GenMap/getcountry/mapdata" 
    $.getJSON(mapKeyUrl, { 
     regsel: "${regsel}", 
     variable: "mapkey" 

    }).done(function(mapdata) { 
     console.log("JSON Map:" + mapdata) 
    }); 

}); 
+0

Хорошо заметили, и спасибо вам большое. Некоторое время ругался о JSON, поэтому подумал, что это был еще один замечательный JSON-специальный, оказалось, что я забыл добавить var :) – vrghost

+0

ОК, поэтому я изменил его на var, но это, похоже, не делает трюк, или я пропущу точку? Еще один ответ – vrghost

+0

@vrghost Обновлен мой ответ. Это помогает изучать основы, прежде чем делать сложные вещи AJAX. ;) https://developer.mozilla.org/en/learn/javascript – jgillich

1

, пожалуйста, используйте эту функцию внутри @ jgillich является right.you можно назвать, как вы сделали в родительской функции. ,

(function() { 
     mapKeyUrl = "/GenMap/getcountry/mapdata" 
     $.getJSON(mapKeyUrl, { 
      regsel: "${regsel}", 
      variable: "mapkey" 

     }) 
     .done(function(mapdata) { 
      console.log("JSON Map:" + mapdata) 
     }) 
    })(); 
Смежные вопросы