2013-01-15 4 views
0

Я работаю над скриптом jQuery, который извлекает массив PHP из базы данных MySQL и возвращает его как объект JSON. Все это работает правильно, и я могу вывести необработанный объект JSON, включая ключ.Передача массива PHP через JSOn для вывода в JQuery

Проблема, с которой я сталкиваюсь, заключается в том, как я ее выводю, и в настоящее время я использую $ .each jQuery.

Пример: (Не полный сценарий, только то, что нужно)

   if(data){ 
       $.each(data, function(key, data) { 
       $('#div').append( key + ' : ' + data ); 

       }); 

     } 

    } , 'json') 

Так что на данный момент выход примерно так: Пример

 Name: Tom Age: 20 Gender: Male 

Однако я не хочу, чтобы все результаты возвращаемого массива, что и делает $ .each. Я хочу вручную выводить различные части массива, где и когда захочу.

Я пытался что-то вроде этого, так что я мог бы просто получить результат массива, имеющий ключ «имя», но он не работает (один из моих ключей массива является имя):

$('#div').append( key + ' : ' + data['name'] ); 

Любые предложения ?

EDIT: Сделать это немного более ясно:

Вместо того, чтобы циклически и выводить весь массив я хочу вывести только выбрать детали: например;

data.name data.age

Те, например, будет только выводить 2 массива с именем и возрастом ключ, даже если массив имеет 10 других результатов.

Массив мы работаем с, как это так, только один результат, но с несколькими значениями .:

{Name: 'Tom' Age: 20 Gender: 'Male'} 
+0

'console.log (данные)' и копировать вставить выход консоли здесь. –

ответ

1

насчет:

$.each(data, function(key, data) { 
    $('#div #span-'+key).html(data); 
}); 

Так что если у вас есть имя клавиши, возраст, пол, вам нужно 3 пролеты с ID: пядь-имя #, # промежуток возраста, # пядь-пол и они будут заполнены с данными. Если вам нужно только имя и возраст, просто удалите # span-gender span, и он не будет отображаться.

Ваш HTML будет что-то вроде:

<div id="div"> 
    <span id="span-name"></span> 
    <span id="span-age"></span> 
</div> 
+0

Вот и все, что я ищу. Теперь я могу выбрать конкретные результаты массива. – JPDP

-1

В коде JQuery, сделайте это.

if(data){ 
    var dec_data = jQuery.parseJSON(data[0]); 
    //Loop over it now 
    jQuery.each(dec_data, function(key, val){ 
     //Stick it in the div 
     jQuery('div').append(key+' - '+val); 
    }); 
} 
+0

Попробуй это перед тем, как спустить вниз! Вы уже «json_encoding», но вы не расшифровываете его на стороне jQuery. –

+0

ОП пытается проанализировать данные, которые уже существуют в javascript, что делает с ним 'json_encode'? – charlietfl

+0

Не кодируется, но декодирование на стороне jQuery имеет много общего с этим. –

0

Я думаю, что вы хотите сделать это:

$.each(data, function(key, val) { 
    $('#div').html(key + ' : ' + val.name); 
}); 

предложение: использование .html() это позволит вам обновить DIV с последними результатами .append() будет добавить результат с предыдущими результатами.

0

Используйте разные имена переменных в each. Вы используете data в качестве основного объекта, а также второй аргумент обратного вызова. Также обратите внимание, что использование ключей чувствительны к регистру

Изменения второго к чему-то еще

$.each(data, function(key, item) { 
       $('#div').append(item.Name ) 

также не ясно, что выглядит ваши данные как.Я предполагаю, что это массив объектов, таких как:

[ {Name: 'Tom' Age: 20 Gender: 'Male'}, {Name: 'Jane' Age: 20 Gender: 'Female'}] 

Если данные только лишь один объект, а не массив, вам не нужно использовать $.each и просто получить доступ к объекту непосредственно с использованием объектов нотации

{Name: 'Tom' Age: 20 Gender: 'Male'} 
alert(data.Name); 
+0

Правильно. Пока и до тех пор, пока мы не узнаем, как выглядит массив, нет удачи в любых решениях. –

+0

Проблема с этим, хотя она по-прежнему выводит все другие результаты как неопределенные. – JPDP

+0

@JPDP не знаю, что вы говорите о – charlietfl

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