Обработка массива, ajax
Здравствуйте!
С помощью .ajax получаю php массив, не подскажете как его обработать? Нужно в цикле посмотрить option'ы Вот такой массив: Array ( [result] => Array ( [173] => Санкт-Петербург [174] => Александровская [175] => Бокситогорск [176] )) Вот так получаю: $('.setCity').change(function() { var shop_location_id = $(this).val(); $.ajax({ type: "GET", url: "/address/", data: "action=city&shop_location_id="+ shop_location_id, success: function(res){ var options = ''; // вот здесь нужно в цикле построить option'ы // пример: <option value = "173">Санкт-Петербург</option> } }); }); Подскажите пожалуйста. Спасибо |
а на кой вы на клиент php массив передаёте, javascript не умеет работать с php массивами.
преобразуйте ваш массив в формат json и передайте его на клиент именно в этом формате. собственно нужна то одна строчка на стороне сервера. echo json_encode ( $myArray ); ================================= На клиенте распарсить данные можно var dat=jQuery.parseJSON(res). а потом работайте с dat как с массивом. |
Цитата:
Данные теперь такие: {"558":"\u0411\u0430\u0431\u0430\u0435\u0432\u043e","559":"\u0411\u0435\u043b\u043e\u0437\u0435\u0440\u0441\u043a","560":"\u0412\u0435\u043b\u0438\u043a\u0438\u0439 \u0423\u0441\u0442\u044e\u0433","561":"\u0412\u0435\u0440\u0445\u043e\u0432\u0430\u0436\u044c\u0435","562":"\u0412\u043e\u0436\u0435\u0433\u0430","563":"\u0412\u043e\u043b\u043e\u0433\u0434\u0430","564":"\u0412\u043e\u0445\u0442\u043e\u0433\u0430","565":"\u0412\u044b\u0442\u0435\u0433\u0440\u0430","566":"\u0413\u0440\u044f\u0437\u043e\u0432\u0435\u0446","567":"\u041a\u0430\u0434\u043d\u0438\u043a\u043e\u0432","568":"\u041a\u0430\u0434\u0443\u0439","569":"\u041a\u0438\u0447\u043c\u0435\u043d\u0433\u0441\u043a\u0438\u0439 \u0413\u043e\u0440\u043e\u0434\u043e\u043a","570":"\u041b\u0438\u043f\u0438\u043d \u0411\u043e\u0440","571":"\u041d\u0438\u043a\u043e\u043b\u044c\u0441\u043a","572":"\u041d\u044e\u043a\u0441\u0435\u043d\u0438\u0446\u0430","573":"\u0421\u043e\u043a\u043e\u043b","574":"\u0421\u044f\u043c\u0436\u0430","575":"\u0422\u0430\u0440\u043d\u043e\u0433\u0441\u043a\u0438\u0439 \u0413\u043e\u0440\u043e\u0434\u043e\u043a","576":"\u0422\u043e\u0442\u044c\u043c\u0430","577":"\u0423\u0441\u0442\u044e\u0436\u043d\u0430","578":"\u0425\u0430\u0440\u043e\u0432\u0441\u043a","579":"\u0427\u0430\u0433\u043e\u0434\u0430","580":"\u0427\u0435\u0440\u0435\u043f\u043e\u0432\u0435\u0446","581":"\u0428\u0435\u043a\u0441\u043d\u0430","582":"\u0428\u0443\u0439\u0441\u043a\u043e\u0435"} $('.setCity').change(function() { var shop_location_id = $(this).val(); $.ajax({ type: "GET", url: "/address/", data: "action=city&shop_location_id="+ shop_location_id, success: function(res){ var options = ''; // вот здесь нужно в цикле построить option'ы // пример: <option value = "173">Санкт-Петербург</option> } }); }); |
$('.setCity').change(function() { var shop_location_id = $(this).val(); $.ajax({ type: "GET", url: "/address/", data: "action=city&shop_location_id="+ shop_location_id, dataType : 'json', success: function(res){ var options = []; for ( var value in res ) { if ( res.hasOwnProperty( value ) ) { options.push( 'value="' + value + '">' + res[ value ] ); } } alert('<option ' + options.join('</option><option ') + '</option>';) // вот здесь нужно в цикле построить option'ы // пример: <option value = "173">Санкт-Петербург</option> } }); }); |
namez,
Вариант ... <!DOCTYPE > <html> <head> <title></title> </head> <body> <select name="lang1" ></select> <script type="text/javascript"> var res = { "558": "\u0411\u0430\u0431\u0430\u0435\u0432\u043e", "559": "\u0411\u0435\u043b\u043e\u0437\u0435\u0440\u0441\u043a", "560": "\u0412\u0435\u043b\u0438\u043a\u0438\u0439 \u0423\u0441\u0442\u044e\u0433", "561": "\u0412\u0435\u0440\u0445\u043e\u0432\u0430\u0436\u044c\u0435", "562": "\u0412\u043e\u0436\u0435\u0433\u0430", "563": "\u0412\u043e\u043b\u043e\u0433\u0434\u0430", "564": "\u0412\u043e\u0445\u0442\u043e\u0433\u0430", "565": "\u0412\u044b\u0442\u0435\u0433\u0440\u0430", "566": "\u0413\u0440\u044f\u0437\u043e\u0432\u0435\u0446", "567": "\u041a\u0430\u0434\u043d\u0438\u043a\u043e\u0432", "568": "\u041a\u0430\u0434\u0443\u0439", "569": "\u041a\u0438\u0447\u043c\u0435\u043d\u0433\u0441\u043a\u0438\u0439 \u0413\u043e\u0440\u043e\u0434\u043e\u043a", "570": "\u041b\u0438\u043f\u0438\u043d \u0411\u043e\u0440", "571": "\u041d\u0438\u043a\u043e\u043b\u044c\u0441\u043a", "572": "\u041d\u044e\u043a\u0441\u0435\u043d\u0438\u0446\u0430", "573": "\u0421\u043e\u043a\u043e\u043b", "574": "\u0421\u044f\u043c\u0436\u0430", "575": "\u0422\u0430\u0440\u043d\u043e\u0433\u0441\u043a\u0438\u0439 \u0413\u043e\u0440\u043e\u0434\u043e\u043a", "576": "\u0422\u043e\u0442\u044c\u043c\u0430", "577": "\u0423\u0441\u0442\u044e\u0436\u043d\u0430", "578": "\u0425\u0430\u0440\u043e\u0432\u0441\u043a", "579": "\u0427\u0430\u0433\u043e\u0434\u0430", "580": "\u0427\u0435\u0440\u0435\u043f\u043e\u0432\u0435\u0446", "581": "\u0428\u0435\u043a\u0441\u043d\u0430", "582": "\u0428\u0443\u0439\u0441\u043a\u043e\u0435" }; var a = document.getElementsByName("lang1")[0] for (var c in res) a.options[a.options.length] = new Option(res[c],c ); </script> </body> </html> |
красиво =)
|
рони спасибо.
А я обработал так, не знаю какой метод лучше, показался более по-jquery'вски success: function(res){ var options = ''; $.each(res, function(key, val){ options += '<option value="' + key + '">' + val + '</option>'; }); $("select").html(options); } |
Друзья подскажите. У меня в массиве новый параметр. city (в конце)
{"result":{"210":"\u041f\u0443\u0448\u043a\u0438\u043d","211":"\u0421\u0435\u0441\u0442\u0440\u043e\u0440\u0435\u0446\u043a","212":"\u0421\u043b\u0430\u043d\u0446\u044b","213":"\u0421\u043e\u0441\u043d\u043e\u0432\u044b\u0439 \u0411\u043e\u0440","214":"\u0422\u0438\u0445\u0432\u0438\u043d","215":"\u0422\u043e\u0441\u043d\u043e","216":"\u0428\u043b\u0438\u0441\u0441\u0435\u043b\u044c\u0431\u0443\u0440\u0433"},"city":"\u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433"} Сейчас я обрабатываю {result} так: success: function (res) { var selected = res.city; $.each(res.result, function (key, val) { // здесь нужно сделать условие, если val = selected то <option selected=selected> options += '<option value="' + key + '">' + val + '</option>'; }); } А как сделать так чтобы при проверке если val = selected то такой option будет иметь атрибут selected=selected ? |
ну добавь ?:
options += '<option value="' + key + '" '+((val == selected)?'selected=selected':'')+'>' + val + '</option>'; |
Цитата:
|
Часовой пояс GMT +3, время: 16:31. |