2014-06-26 5 views
0

Я новичок в jquery mobile. Я пытаюсь получить контактное имя из контактов. JSON, отправив запрос AJAX. Но я не получаю предупреждения, когда я нажимаю кнопку отправки.Как разобрать ответ json в jQuery mobile?

Мой запрос JQuery Ajax

$(document).ready(function() { 

    //after button is clicked we download the data 
    $("#submit").click(function(){ 

     //start ajax request 
     $.ajax({ 
      url: "myURL/contacts.json", 

      dataType: "json", 
      success: function(data) { 

       var json = $.parseJSON(data); 

       alert(json.name); 

      }); 
     }); 
    }); 

contacts.json

{ 
    "contacts": [ 
    { 
      "id": "c200", 
      "name": "Ravi Tamada", 
      "email": "[email protected]", 
      "address": "xx-xx-xxxx,x - street, x - country", 
      "gender" : "male", 
      "phone": { 
       "mobile": "+91 0000000000", 
       "home": "00 000000", 
       "office": "00 000000" 
      } 
    }, 
    { 
      "id": "c201", 
      "name": "Johnny Depp", 
      "email": "[email protected]", 
      "address": "xx-xx-xxxx,x - street, x - country", 
      "gender" : "male", 
      "phone": { 
       "mobile": "+91 0000000000", 
       "home": "00 000000", 
       "office": "00 000000" 
      } 
    }, 
    . 
    . 
    . 
    . 

] }

Как создать динамический список интерактивными для ответа выше Ajax?

ответ

0
dataType: "json" 

уже задает возвращаемые данные как объект json. так, чтобы читать значения, вы можете просто использовать синтаксис объекта:

success: function(data) { 
    //cycle trough returned "contacts": 
    for(var i=0;i<data.contacts.length;i++){ 
     console.log(data.contacts[i].name); 
    } 
} 
+0

Как назначить json-ответ для одной переменной, например var json = – user3744502

+0

var json = data .... но я не понимаю, почему это было бы необходимо .... –

+0

Как создать динамический список кликов для вышеуказанного ответа ajax – user3744502

0

от внешнего вида, ваш json будет массивом объекта. Попробуйте сделать json [0] .Инте его для тестирования

0

Во-первых, наш код плохо отформатированный (умные цитаты, неправильное размещение скобок). Во-вторых, так как контакты в массиве, вы не можете получить доступ к ним с помощью json.name, вы должны попробовать что-то вроде этого, вместо:

$(document).ready(function() { 

    //after button is clicked we download the data 
    $("#submit").click(function() { 

     //start ajax request 
     $.ajax({ 
      url: "myURL/contacts.json", 
      dataType: "json", 
      success: function (data) { 

       var json = $.parseJSON(data); 

       json.contacts.forEach(function(val, ind, arr){ 
        alert(val.name); 
       }); 

      } 
     }); 
    }); 
}); 
0

ваши данные в формате JSON, присутствующих внутри контактов, так что вы должны принять имя в этом формате.

var json = $.parseJSON(data); 
    alert(json.contacts[0].name); 
0

Вместо разбора JSON вы можете сделать, как followng:

$.ajax({ 
.. 
dataType: 'json' // using json, jquery will make parse for you 
}); 

Чтобы получить доступ к свойству вашего JSON делать, как показано ниже:

data[0].name; 

data[0].email; 

Почему нужны данные [ 0], потому что данные являются массивом, поэтому для его получения содержимого вам нужны данные [0] (первый элемент), который дает вам объект {"name": "myName", "address": "myAddress"}.

И для доступа свойства объекта правила является:

Object.property 

или иногда

Object["property"] // in some case 

Так что вам нужно

data[0].name и так далее, чтобы получить то, что вы хотите.

Если вы не

установить dataType: json, то вам нужно разобрать их с помощью $.parseJSON() и для извлечения данных, как и выше.

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