Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.12.2011, 13:31
Аспирант
Отправить личное сообщение для tuezov52 Посмотреть профиль Найти все сообщения от tuezov52
 
Регистрация: 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];
Ответить с цитированием
  #2 (permalink)  
Старый 15.12.2011, 14:25
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Я конечно не разбираюсь в php и не знаю, можно ли сразу создавать двухмерные массивы. Но проще всего посмотреть какой ответ возвращает сервер и показать здесь, тогда вам помогут.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #3 (permalink)  
Старый 15.12.2011, 14:29
Аспирант
Отправить личное сообщение для tuezov52 Посмотреть профиль Найти все сообщения от tuezov52
 
Регистрация: 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]
Ответить с цитированием
  #4 (permalink)  
Старый 15.12.2011, 14:41
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 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
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #5 (permalink)  
Старый 15.12.2011, 14:57
Аспирант
Отправить личное сообщение для tuezov52 Посмотреть профиль Найти все сообщения от tuezov52
 
Регистрация: 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.
На данный момент массивы заполнены вручную.
Это все что требуется.
Ответить с цитированием
  #6 (permalink)  
Старый 15.12.2011, 15:24
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 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;
});
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #7 (permalink)  
Старый 15.12.2011, 15:38
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

tuezov52, вы уже полгода изучаете JS и до сих пор на таком уровне? Ну-ну.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #8 (permalink)  
Старый 15.12.2011, 15:42
Аспирант
Отправить личное сообщение для tuezov52 Посмотреть профиль Найти все сообщения от tuezov52
 
Регистрация: 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;
});


Не работает
Ответить с цитированием
  #9 (permalink)  
Старый 15.12.2011, 15:51
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

tuezov52,
Очень жаль. Попробуйте не просто копипастить, а подумать.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #10 (permalink)  
Старый 15.12.2011, 15:59
Аспирант
Отправить личное сообщение для tuezov52 Посмотреть профиль Найти все сообщения от tuezov52
 
Регистрация: 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 я просто более или менее разобрался в синтаксисе. Если Вы думаете, что можете написать мой пример лучше - то он либо будет длиннее, либо более навороченный. Этого не требуется. Если же Вы видите код меньшим и более рациональным, то хотелось бы увидеть хотя бы намек на это".
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт пашет только в ie. hacker_007 Общие вопросы Javascript 10 03.04.2011 03:28
Drag&Drop не пашет помогите, я нуб, нужен совет bookin Элементы интерфейса 0 16.09.2010 14:00
Как прижать к низу?? (даже как тему назвать не знаю) sanhai (X)HTML/CSS 4 17.08.2010 11:27
Конструкция не пашет в функции , а в событии работает FRIE jQuery 1 05.03.2010 11:38
window.event.srcElement не пашет? Влад Firefox/Mozilla 4 07.08.2009 11:27