
15.12.2011, 13:31
|
Аспирант
|
|
Регистрация: 27.02.2011
Сообщений: 42
|
|
Даже элементарное не пашет
Добрый день. Мне нужно получить 2мерный массив в javascipt из php вида
res[1][name], res[1][family].
Привожу код php
<?
$res[1][name]="sasha";
$res[1][name]="masha";
echo json_encode($res);
Т.е в конечном итоге хочу обращаться в JS к массиву, как
res[1][name];
|
|

15.12.2011, 14:25
|
 |
Профессор
|
|
Регистрация: 06.05.2009
Сообщений: 1,163
|
|
Я конечно не разбираюсь в php и не знаю, можно ли сразу создавать двухмерные массивы. Но проще всего посмотреть какой ответ возвращает сервер и показать здесь, тогда вам помогут.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
|
|

15.12.2011, 14:29
|
Аспирант
|
|
Регистрация: 27.02.2011
Сообщений: 42
|
|
$.ajax({
type: "POST",
url: "test.php",
dataType: "json",
}).done (function( data ) {
alert(data['1']['name']);
});
Выведет "sasha"
Т.е ответ получен. Мне нужно получить массив ниже функции AJAX и при этом не data['1']['name'], а data[1][name]
|
|

15.12.2011, 14:41
|
 |
Профессор
|
|
Регистрация: 06.05.2009
Сообщений: 1,163
|
|
AJAX асинхронен. Непосредственно после функции вы полчить данные не сможете. Вы можете их сохранить в родительской области callback`a, в частности в глобальной области.
var globalData;
$.ajax({
type: "POST",
url: "test.php",
dataType: "json",
}).done (function( data ) {
globalData = data;
});
Сообщение от tuezov52
|
при этом не data['1']['name'], а data[1][name]
|
В js синтаксис другой, смеритесь что ле.
Либо так:
data['1']['name']
Либо так:
data['1'].name
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
|
|

15.12.2011, 14:57
|
Аспирант
|
|
Регистрация: 27.02.2011
Сообщений: 42
|
|
Привожу полный js код
function HelpShow(){
//Заводим переменные форм
var word = document.getElementById("serch");
var result = document.getElementById("mySelect");
var url = document.getElementById("url");
$.ajax({
type: "POST",
url: "test.php",
dataType: "json",
}).done (function( data ) {
});
alert(globaldata['title']);
var title = new Array()
title[0] = 'Главная';
title[1] = 'Продукция';
title[2] = 'Контакты';
title[3] = 'Статьи';
var url = new Array()
url[0] = 'index';
url[1] = 'production';
url[2] = 'contacts';
url[3] = 'articles';
var buffer = '';
var first = '';
var second = '';
result.style.display = "none";
//Стираем список, если строка ввода пустая
for (i = 100; i > 0; i--){
result.options[result.options.length-1] =null;}
url.value ='';
//Заполняем список
for (i = 0; i < title.length; i++){
//Подсчет числа сравниваемых символов
buffer = title[i];
for (j=0; j < word.value.length; j++){
first += buffer[j].toLowerCase();
second += word.value[j].toLowerCase();}
if (first == second){
result.options[result.options.length] = new Option(title[i], url[i]);
result.style.display = "list-item";
}
first=null; second=null;
}
//Стираем список если пустой
if (word.value == ''){
result.style.display = "none";
for (i = 100; i > -1; i--){
result.options[result.options.length-1] =null;}}
}
function ChangeValue(){
var word = document.getElementById("serch");
var result = document.getElementById("mySelect");
var url = document.getElementById("url");
word.value = result.options[result.selectedIndex].text;
url.value = result.options[result.selectedIndex].value;
result.style.display = "none";
}
Задача - заполнить Array (title, url) из PHP, где данные передаются JSON.
На данный момент массивы заполнены вручную.
Это все что требуется.
|
|

15.12.2011, 15:24
|
 |
Профессор
|
|
Регистрация: 06.05.2009
Сообщений: 1,163
|
|
var title, url, all;
$.ajax({
type: "POST",
url: "test.php",
dataType: "json",
}).done (function( data ) {
all = data;
title = data.title;
url = data.url;
});
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
|
|

15.12.2011, 15:38
|
 |
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
tuezov52, вы уже полгода изучаете JS и до сих пор на таком уровне? Ну-ну.
|
|

15.12.2011, 15:42
|
Аспирант
|
|
Регистрация: 27.02.2011
Сообщений: 42
|
|
var title, url, all;
$.ajax({
type: "POST",
url: "test.php",
dataType: "json",
}).done (function( data ) {
all = data;
title = data.title;
url = data.url;
});
Не работает
|
|

15.12.2011, 15:51
|
 |
Профессор
|
|
Регистрация: 06.05.2009
Сообщений: 1,163
|
|
tuezov52,
Очень жаль. Попробуйте не просто копипастить, а подумать.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
|
|

15.12.2011, 15:59
|
Аспирант
|
|
Регистрация: 27.02.2011
Сообщений: 42
|
|
Сделал так.
function HelpShow(){
//Заводим переменные форм
var word = document.getElementById("serch");
var result = document.getElementById("mySelect");
var url = document.getElementById("url");
var title, url, all;
$.ajax({
type: "POST",
url: "test.php",
dataType: "json",
}).done (function( data ) {
all = data;
title = data.title;
url = data.url;
});
alert(url['1']['title']);
var buffer = '';
var first = '';
var second = '';
result.style.display = "none";
//Стираем список, если строка ввода пустая
for (i = 100; i > 0; i--){
result.options[result.options.length-1] =null;}
url.value ='';
//Заполняем список
for (i = 0; i < title.length; i++){
//Подсчет числа сравниваемых символов
buffer = title[i];
for (j=0; j < word.value.length; j++){
first += buffer[j].toLowerCase();
second += word.value[j].toLowerCase();}
if (first == second){
result.options[result.options.length] = new Option(title[i], url[i]);
result.style.display = "list-item";
}
first=null; second=null;
}
//Стираем список если пустой
if (word.value == ''){
result.style.display = "none";
for (i = 100; i > -1; i--){
result.options[result.options.length-1] =null;}}
}
function ChangeValue(){
var word = document.getElementById("serch");
var result = document.getElementById("mySelect");
var url = document.getElementById("url");
word.value = result.options[result.selectedIndex].text;
url.value = result.options[result.selectedIndex].value;
result.style.display = "none";
}
Понимаете в чем дело. Я пишу на Delphi, Pascal и Php и иногда мне необходимо в php писать дополнения на JS. Я не изучаю JS. И подумать в моем случаи - равносильно ткнуть пальцем в небо. Поэтому я и прошу подсказки. PS "Заметьте! Весь исходный код, что тут есть - я написал сам. Другому автору по поводу моего полугодового изучения JS. Я не изучаю JS я просто более или менее разобрался в синтаксисе. Если Вы думаете, что можете написать мой пример лучше - то он либо будет длиннее, либо более навороченный. Этого не требуется. Если же Вы видите код меньшим и более рациональным, то хотелось бы увидеть хотя бы намек на это".
|
|
|
|