2013-02-22 5 views
1

Я использую автозаполнение Jquery Ui.Доступ к данным из Ajax Call JQuery

Проблема у меня есть данные, которые возвращаются из моего api.

"{"d":{"results":[],"facets":{"facet_counts":{"Town":{"":0,"londonderry":136914,"london bridge":1,"london":8983316,"london colney":1}}},"__solr_time":3473457,"__ser_time":1564,"__t_time":1421,"__count":9120232,"__max_score":1.0}}" 

Я запустить его через интернет-парсер и действует, но я не знаю, как получить доступ к списку городов с соответствующим номером рядом с ним.

Любая помощь будет оценена

+0

читать об ассоциативных массивах. Как/почему вы так форматировали возвращаемое значение, если не знаете, как его деконструировать? – Colleen

+0

У меня нет контроля над этим, я бы никогда не сделал это так. –

ответ

0

Я был в состоянии получить доступ к Town «имя» и номер с помощью:

var test = { 
    "d": { 
     "results": [], 
     "facets": { 
      "facet_counts": { 
       "Town": { 
        "": 0, 
        "londonderry": 136914, 
        "london bridge": 1, 
        "london": 8983316, 
        "london colney": 1 
       } 
      } 
     }, 
     "__solr_time": 3473457, 
     "__ser_time": 1564, 
     "__t_time": 1421, 
     "__count": 9120232, 
     "__max_score": 1 
    } 
} 
for(var prop in test.d.facets.facet_counts.Town){ 
    console.log(prop); 
    console.log(test.d.facets.facet_counts.Town[prop]); 
} 
+0

Благодаря это работает и это здорово, но когда я называю тот же код из Аякса называют это терпит неудачу $ .ajax ({ URL: «town.php», типа: «GET», кэша: ложь, успех : function (text) { alert (текст); для (var prop in text.d.facets.facet_counts.Town) { console.log (prop); //console.log(test.d.facets. facet_counts.Town [prop]); } } –

+0

Я бы сделал console.log, чтобы текст, возвращаемый из вызова ajax, был в том же формате (то есть объект, а не строка). сделать: 'for (var prop в text.facets.facet_counts.T собственный) 'или, как сказал Майк, сделайте JSON.parse, прежде чем отправиться в город, в котором вы нуждаетесь. В любом случае, console.log расскажет вам, что вам нужно знать –

+0

Спасибо за вашу помощь. Наконец, я получил его на работу. Json.parse просто ошибки. success: function (dat, status) { if (status == "success") response ($. Map (dat.d.facets.facet_counts.Town, function (item, key) { if (item == 0) { возвращение } возвращение { ярлык: ключ + "(" + пункт + ")", значение: ключ } })) } –

0

Просто запустите JSON.parse() на строке, а затем вытащить Town узел.

var string; // the data string returned by API. 
var dataObj = JSON.parse(string); 
var Town = dataObj.d.facets.facet_counts.Town; 

// access the properties as needed 
var londonCount = Town.london; 
var londonBridgeCount = Town['london bridge']; // need to use bracket notation to get this one 
+0

Я пробовал использовать jsonParse, но это не удалось –

Смежные вопросы