2013-03-05 3 views
1

Я пытаюсь получить массив из PHP и манипулировать им дальше с помощью jQuery. В моем PHP файл я сделать echo json_encode($data) и когда я ставлю предупреждение в моем ответе на JQuery я получаю:Получение ключа => значение из массива json, переданное из php

[ 
    { 
     "CustomerID": "C43242421", 
     "UserID": "432421421", 
     "Customer": "rqewrqwreeqwr", 
     "Add1": "rqwerqwreqwrqwrqwr", 
     "Add2": " ", 
     "Add3": " ", 
     "Phone": "4131231", 
     "Fax": "532442141", 
     "Contact": "reqwrqwrw", 
     "Email": "gfdgdsg", 
     "PaymentTerm": null, 
     "Country": "3231", 
     "City": "111", 
     "Zip": " " 
    } 
] 

, которым является действительным массивом JSON. Теперь то, что я пытаюсь сделать дальше, - это получить пары в качестве значения key =>, как это было бы в ассоциативном массиве в php.

$.post("templates/test.php", 
    {data: query, 
    cond: $(this).text(), 
    action: 'select' 
    }, 
function(res) { 
    alert(res) //outputs what i pasted above 
    $.each($.parseJSON(res), function(key, value) { 
     alert(key + value); 
     //this outputs: 0[object Object] 
}); 

Удаление $.parseJSON в приведенной выше функции дает мне по ошибке Firebug в invalid 'in' operand e on jquery.min.js(line 3) log.Can вы помочь мне с моими проблемами?

+1

Это массив '[]' содержащий один объект '{}'. Вы должны получить доступ к первому элементу массива 'parseJSON (res) [0]' –

ответ

4

Try:

var r = $.parseJSON(res); 

$.each(r[0], function(key, value) { 
     alert(key + value); 

}); 
+0

Да, это работает. Большое спасибо! Я попробовал прямо поместить '$ .parseJSON (res [0]);' но я получил 'JSON.parse: неожиданный конец данных' и не пробовал его другим способом :) Еще раз спасибо! И теперь я вижу, что мне приходилось делать это как '$ .parseJSON (res) [0];': D – vulkoingim

0
res = $.parseJSON(res); 

for (var i = 0; l = res.length; i < l; i++) { 
    data = res[i]; 
    customer = data.Customer; 

}

Вы есть массив объектов. Вы можете выполнять итерацию по массиву объектов точно так же, как и код выше.

1

Результат $.parseJSON(res) - это массив, содержащий один элемент (объект). Когда вы перебираете этот массив (используя $.each), value представляет весь объект, который хранится в текущем индексе массива. Вам нужно пройти по этому объекту, чтобы вывести его свойства:

$.each($.parseJSON(res)[0], function(key, value) { 
    alert(key + ' = ' + value); 
}); 

Если у вас есть массив с несколькими объектами внутри него, это более общий код должен выводить пары ключ-значение для всех из них:

$.each($.parseJSON(res), function(index, arrayObject) { 
    $.each(arrayObject, function(key, value) { 
     alert(key + ' = ' + value); 
    }); 
}); 
0

Попробуйте это:

$.getJSON('your-json-string-file.php', function (data) { 

    $.each(data, function(key, val) { 
    alert(key +'=>'+ val) 
    }); 

}); 

Надеется, что это поможет вам

0

Вы можете получить какой-то объект от json:

function parse_json(res) 
{ 
    try{ 
    return eval('(' + response + ')'); 
    } 
    catch(e){ 
    // invalid json 
    } 
} 
+0

Это совсем не относится к вопросу, поскольку они уже преобразовали строку JSON в объект, который он (это то, что делает '.parseJSON()'). –

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