Как отобразить значения объекта JSON? - PullRequest
3 голосов
/ 03 марта 2010

Вот что я получил до сих пор. Пожалуйста, прочитайте комментарий в коде. Он содержит мои вопросы.

var customer;   //global variable
function getCustomerOption(ddId){
      $.getJSON("http://localhost:8080/WebApps/DDListJASON?dd="+ddId, function(opts) {
           $('>option', dd).remove(); // Remove all the previous option of the drop down
           if(opts){  
                customer = jQuery.parseJSON(opts); //Attempt to parse the JSON Object.
           }
      });
}

function getFacilityOption(){
      //How do I display the value of "customer" here. If I use alert(customer), I got null
}

Вот как должен выглядеть мой объект json: {"3":"Stanley Furniture","2":"Shaw","1":"First Quality"}. В конечном итоге я хочу, чтобы, если я передал ключ 3, я хотел бы вернуть Stanley Furniture, а если я передал Stanley Furniture, я получил 3 обратно. Поскольку 3 является customerId, а Stanley Furniture является customerName в моей базе данных.

Ответы [ 3 ]

6 голосов
/ 03 марта 2010

Если сервлет уже возвращает JSON (как представляется, URL), вам не нужно анализировать его в функции $.getJSON() jQuery, а просто обрабатывать как JSON. Избавься от этого jQuery.parseJSON(). Это может сделать вещи потенциально еще хуже. Функция getFacilityOption() должна использоваться в качестве функции обратного вызова $.getJSON(), или вам необходимо записать ее логику в function(opts) (которая фактически является текущей функцией обратного вызова).

строка JSON

{"3":"Stanley Furniture","2":"Shaw","1":"First Quality"}

... вернет "Мебель Стэнли" при доступе следующим образом

var json = {"3":"Stanley Furniture","2":"Shaw","1":"First Quality"};
alert(json['3']);
// or
var key = '3';
alert(json[key]);

Чтобы узнать больше о JSON, я настоятельно рекомендую прочитать эту статью . Чтобы узнать больше о $.getJSON, проверьте его документацию .

2 голосов
/ 03 марта 2010
var customer;   //global variable
function getCustomerOption(ddId){
      $.getJSON("http://localhost:8080/WebApps/DDListJASON?dd="+ddId, function(opts) {
           $('>option', dd).remove(); // Remove all the previous option of the drop down
           if(opts){  
                customer = opts; //Attempt to parse the JSON Object.
           }
      });
}

function getFacilityOption(){
  for(key in costumer)
  {
    alert(key + ':' + costumer[key]);   
  }
}
2 голосов
/ 03 марта 2010

getJSON запустит асинхронный XHR-запрос. Поскольку он асинхронный, неизвестно, когда он завершится, и поэтому вы передаете обратный вызов getJSON, чтобы jQuery мог сообщить вам, когда это будет сделано. Таким образом, переменная customer присваивается только после завершения запроса, а не мгновением ранее.

parseJSON возвращает объект JavaScript:

var parsed = jQuery.parseJSON('{"foo":"bar"}');
alert(parsed.foo); // => alerts "bar"

.. но, как сказал BalusC, вам не нужно ничего анализировать, поскольку jQuery делает это за вас, а затем передает полученный объект JS в вашу функцию обратного вызова.

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