Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   ЧаВО - часто задаваемые вопросы (faq) (https://javascript.ru/forum/misc/9459-chavo-chasto-zadavaemye-voprosy-faq.html)

Андрей38 15.09.2011 22:57

... а чтоб подсоеденить JSON из другого домена ,то JSON должен быть вырван из ШТЭМЕЛя другого домена,или быть там отдельным файлом с расширением .json ???

Gozar 15.09.2011 23:33

Андрей38,
Чтобы json стал объектом его нужно сделать объектом, пока он не объект - он просто текст. Откуда ты его будешь вырывать или загружать скрипту без разницы.

melky 16.09.2011 08:23

Цитата:

Сообщение от Андрей38 (Сообщение 126675)
... а чтоб подсоеденить JSON из другого домена ,то JSON должен быть вырван из ШТЭМЕЛя другого домена,или быть там отдельным файлом с расширением .json ???

лучше бы отдельный php-шный файл с расширением .js

похоже, что вы ничего не знаете о json

обязательно к прочтению

Андрей38 16.09.2011 10:25

Цитата:

Сообщение от melky (Сообщение 126710)
лучше бы отдельный php-шный файл с расширением .js

похоже, что вы ничего не знаете о json

обязательно к прочтению

Да,конечно,только сейчас до него дозрел.
...За отдельный php-шный файл с расширением.js отдельное СПАСИБО!

Андрей38 16.09.2011 10:27

Цитата:

Сообщение от Gozar (Сообщение 126676)
Андрей38,
Чтобы json стал объектом его нужно сделать объектом, пока он не объект - он просто текст. Откуда ты его будешь вырывать или загружать скрипту без разницы.

Спасибо!

Андрей38 16.09.2011 10:39

Попов просто супер рассказывает,ну или подбирает то .ЧТО надо!
http://ruseller.com/lessons.php?rub=28&id=1212 И почему к нему такое принебрежение ?... Ну это из области флуда..
http://www.learn-ajax-tutorial.com/Json.cfm и еще нашел..

Андрей38 16.09.2011 11:18

Цитата:

Сообщение от melky (Сообщение 126710)
лучше бы отдельный php-шный файл с расширением .js

похоже, что вы ничего не знаете о json

обязательно к прочтению

http://api.jquery.com/jQuery.getJSON/
$.getJSON('ajax/test.json', function(data) {
var items = [];

$.each(data, function(key, val) {
items.push('<li id="' + key + '">' + val + '</li>');
});

$('<ul/>', {
'class': 'my-new-list',
html: items.join('')
}).appendTo('body');
});
А вот здесь,кажеться,такое расширение как json ,отдельно взятого файла, таки есть..
А это ,по-видимому_ его начинка
{
"one": "Singular sensation",
"two": "Beady little eyes",
"three": "Little birds pitch by my doorstep"
}

А еще так они делают
<script>
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",
{
tags: "cat",
tagmode: "any",
format: "json"
},
function(data) {
$.each(data.items, function(i,item){
$("<img/>").attr("src", item.media.m).appendTo("#images");
if ( i == 3 ) return false;
});
});</script>

а тут он в пхп как Вы говорили
http://www.factory-h.com/blog/?p=67&cpage=1#comment-154
EJEMPLO:

$.getJSON(‘data.php’,
{
num: Math.random() <– NÚMERO ALEATORIO BASURA
},
function(data, status){

//LO QUE SEA QUE HAGAMOS

});
http://anton.shevchuk.name/javascrip...eginners-ajax/

это http://xhtml.co.il/ru/jQuery/jQuery.getJSON
Загружает данные JSON из test.js и выводит в сообщении имя из
$.getJSON("test.js", function(json){
alert("JSON Data: " + json.users[3].name);
});

http://anton.shevchuk.name/javascrip...eginners-ajax/
http://www.hunlock.com/blogs/Masteri...t_Notation_%29

Kolyaj 16.09.2011 11:39

Браузеру всё равно, какое расширение у "файла". Расширения нужны серверу, а не браузеру.

Андрей38 16.09.2011 13:53

Цитата:

Сообщение от Kolyaj (Сообщение 126725)
Браузеру всё равно, какое расширение у "файла". Расширения нужны серверу, а не браузеру.

Спасибо,Коля!

Андрей38 17.09.2011 01:33

Источник
http://anton.shevchuk.name/javascrip...ajax/#more-522
Вот _ XML делает все это на ура_ как в обычном доме -индексы ищет, фильтры- еще не проверял. А в ДЖЕЙСОНЕ, в ДЖЕЙСОНЕ_ как это повторить ??

<script type="text/javascript">

$(document).ready(function(){ // по завершению загрузки страницы
$('#example-3').click(function(){
....


// вешаем на клик по элементу с id = example-3
$.post('example.xml', {}, function(xml){ // загрузку XML из файла example.xml

$(xml).find('note').each(function(){ // заполняем DOM элемент данными из XML
$('#example-3').append('To: ' + $(this).find('to').index() + '<br/>')
.append('From: ' + $(this).find('from').index() + '<br/>')
.append('<b>' + $(this).find('heading').index() + '</b><br/>')
.append( $(this).find('body').text() + '<br/>');
});
}, 'xml'); // указываем явно тип данных
})
});
</script>

x-yuri 17.09.2011 11:20

как-то так...
$('example-3').addEvent('click', function() {
    new Request.JSON({url: '...',
        onSuccess: function(response) {
            $('dst').innerHTML = response.map(function(note) {
                return '<p>To: ' + note.to
                    + '<p>From: ' + note.from
                    + '<h1>' + note.heading + '</h1>'
                    + note.body;
            }).join('');
        }
    }).post({...});
});


p.s. форматирование хотя бы используй

Kolyaj 17.09.2011 21:16

Андрей38,
что это за портянка несвязного текста?

Андрей38 17.09.2011 21:36

Цитата:

Сообщение от Kolyaj (Сообщение 126898)
Андрей38,
что это за портянка несвязного текста?

Такой себе архив ответов самому себе на те вопросы которые я задавал в этой ветке в отношении структуры Джейсона ,так как предположил из ответа поста #51
, что Джейсон_ это тот же массив.Я только не понимаю,когда надо ставить квадратные ,а когда фигурные скобки

Я смотрю ,что по индексу ищет в квадратных скобках, а хотелось бы, чтоб так же работало и в фигурных.
Как это
var obj = {
name: "Pete",
age: 15
};

конвертить и обратно чтоб по ИНДЕКСУ доставало значения ?

Gozar 17.09.2011 22:03

Цитата:

Сообщение от Андрей38 (Сообщение 126903)
Джейсон_ это тот же массив.Я только не понимаю,когда надо ставить квадратные ,а когда фигурные скобки

Называй его json.

Значениями массива могут быть объекты(, массивы, строки и т.д.), а свойствами объекта могут быть массивы(, объекты, строки и т.д.).

Gozar 17.09.2011 22:37

Андрей38,
Заканчивай с Поповым и рулонами постов в этой теме. Заведи себе блог или создавай темы с вопросами. Эта тема для внесения в faq. Если нет предложений, то просьба больше в эту тему не писать.

Андрей38 17.09.2011 22:49

Цитата:

Сообщение от Gozar (Сообщение 126911)
Андрей38,
Заканчивай с Поповым и рулонами постов в этой теме. Заведи себе блог или создавай темы с вопросами. Эта тема для внесения в faq. Если нет предложений, то просьба больше в эту тему не писать.

Вас понял,спасибо .Завожу блог

m4gz 27.10.2011 06:34

Подскажите пожалуйста как смотреть ошибки на ipad?

GuardCat 31.10.2011 13:36

Как вариант, заключайте код в
try {
	// ваш код
} catch(e) {
	alert(e)//например
}

А вот статья по отладке на iOs.

Андрей38 22.11.2011 00:37

Цитата:

Сообщение от Гундарев Виктор (Сообщение 126462)
Скачал и установил комплекс Microsoft Visual Studio Express для Web дизайна, это демо версия на 30дней. Посмотрел и учитывая что я уже немного освоил Adobe Dreamweaver возник вопрос. Кто знаком с обоими продуктами, подскажите плиз. На чем все-таки лучше заниматься Web дизайном (включая скрипты), на Microsoft Visual Studio или на Adobe Dreamweaver ?
Что не нравится в Adobe Dreamweaver, что нет средств для разработки Скриптов, хотя все остальное очень нравится. Правда я не знаю насколько удобен Microsoft Visual Studio, т.к. на нем не работал, зато в нем и средства для работы со Скриптами и с Базами Данных (как я понял при беглом осмотре).
Извините за примитивный вопрос Новичка.

Дримвивер для меня,что-то на подобии присутсвия одного из здешних Гуру.Ошибки кода показывает, стили автоматом шьет...Эта прога+ ВебДиволопер для Мозиллы ну или Стрекоза для Оперы- думаю ПАКЕТ для скриптовальщиков ВСЕХ стран и народов

trikadin 22.11.2011 00:59

Цитата:

Сообщение от Андрей38
Ошибки кода показывает, стили автоматом шьет...

А ещё глючит!.. Собственно, это была первоочередная причина, по которой я на него забил. Ах да, ещё он под линь не портирован)

Не, ну правда. Ошибка сохранения файла через раз - это много.

Андрей38 22.11.2011 13:21

Спасибо.Я как то не замечал такого .К файлу я добираюсь через Файлы-правая кнопка-(там )ИСЛЕДОВАТЬ_ так попадаю в Виндовский проводник-затем архивирую .ну и все, вроде

Андрей38 24.11.2011 15:16

http://ruseller.com/lessons.php?rub=32&id=700
Квери стало популярно и вот , сделали обяснение

FINoM 26.11.2011 05:58

Не квери, не кувери, не кверти, а jQuery (или Джиквери хотя-бы). Это то же самое, что и JAVA script, блин.

melky 26.11.2011 12:31

я ещё "жиквери" слышал. лучше уж тогда JQ.

Андрей38 26.11.2011 14:18

Цитата:

Сообщение от melky (Сообщение 139072)
я ещё "жиквери" слышал. лучше уж тогда JQ.

...Извините .Не втему. Чем померять скорость поиска в JQ?
1)
$('#Fo *:eq(234)')
alert(XXX_1 time)
2 )
$('#Fo .e-234)')
alert(XXX_2 time)
3 )
$('#Fo ').find('.e-234')
alert(XXX_3 time)
4 )
$('#Fo ').find('*:eq(234)')
alert(XXX_4 time)
?????????????????????
И еще просил бы сказать СРАЗУ,что здесь ищет быстрее всего

x-yuri 26.11.2011 15:09

Цитата:

Сообщение от Gozar
Андрей38,
Заканчивай с Поповым и рулонами постов в этой теме. Заведи себе блог или создавай темы с вопросами. Эта тема для внесения в faq. Если нет предложений, то просьба больше в эту тему не писать.

  

melky 17.05.2012 10:37

Насчёт возвращения значения из функции аяксового запроса в jQuery.


Вопрос :

у меня код возвращает deferred\undefined, вместо результата запроса!
function req(){
    return $.ajax({
        url: '/foo.php',
        method: 'GET',
        success: function(data){
            return data; // <-- проблема тут?
        }
    });
}

var myData = req();
alert(myData);

Ответ :

Проблема в том, что в jQuery по-умолчанию (без указания параметра async в false) совершаются асинхронные* запросы, поэтому функция - обработчик события завершения запроса (success) - исполнится через какое-то время. А интерпретатор JS будет исполнять код дальше, не дожидаясь конца запроса, и получается, что функция возвратит результат работы $.ajax ($.Deferred), или undefined.

* асинхронные в смысле асинхронности самого JS.
Как решить?

Либо указывайте параметр синхронного запроса (async: false), но будьте готовы к заморозке интерфейса на время совершения запроса, либо оборачивайте код, использующий результат запроса в функцию и указывайте её в success, тогда будет гарантия на то, что код исполнится в тот момент, когда данные получены:
function req(){
    return $.ajax({
        url: '/foo.php',
        method: 'GET',
        success: function(data){
            handle(data);
        }
    });
}

var handle = function(data){
    alert(data);
}


P.S. каждый день этот вопрос задают. буду ссыль кидать на этот пост :)

Gozar 22.05.2012 21:04

OK

melky 18.06.2012 13:51

Как сделать такой же скролл, как у ВКонтакте, при просмотре фотографий


Я не сижу ВКонтакте! Что это за скролл?
Это такой эффектик (дизайнерская находка, трикс - называйте, как хотите), при котором модальное окно скроллится, если не помещается в видимую часть страницы. Так же это называется "скроллом отдельного блока", "скроллом модального окна".
Вкратце, как оно работает?
Всё просто: контент страницы находится во wrapper'e, а рядом с ним (т.е. в том же родителе, что и контент) находится wrapper модального окна (далее "ширма"), который имеет прокрутку по вертикали и фиксированные размеры на всю видимую часть страницы (т.е. размеры окна. В примере я использовал фиксированное позиционирование со стопроцентными шириной и высотой.). Соответственно, когда модальное окно скрыто, эта ширма тоже скрыта, когда модальное окно показано, ширма видима. Для того, чтобы скрыть скролл контента, элементу <body> устанавливают overflow: hidden, пока модальное окно показано. В старых IE следует убирать прокрутку у элемента <html>*.
Пример кода:
Необходима свободная страница, без панелей редактирования, поэтому я сделал пример на jsbin. Код комментирован, я думаю, читатель разберётся сам, если будет читать код.

http://jsbin.com/epicom
Код проверен: IE10, IE9, IE8, IE7 (7,8,9 - в режиме эмулирования, Win8 RC), CH19, FF13, O12 <-- Linux x86_64.

В IE "БАГ"
после показа модального окна, для того, чтобы скроллить его, нужно щёлкнуть на нём мышкой. Если знаете решение, прошу отписать в ЛС.
* может быть причина "не в старом IE"

Deff 18.06.2012 14:00

melky,
+ Ток имхо у модалки нун тень на подложку и padding для текста - презентация должна захватывать зрителя

melky 18.06.2012 14:01

Цитата:

Сообщение от Deff (Сообщение 182271)
melky,
+ Ток имхо у модалки нун тень на подложку и padding для текста - презетация должна захватывать зрителя

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

sergiocharm 23.06.2012 15:32

Gozar, как реализовать вывод модального окна с вопросом, если клиент закрывает страницу до 5 секунд и до 2 страниц просмотра?

спасибо!

sergiocharm 23.06.2012 16:03

вывод модального окна я знакю как делать, сейчас копаю в сторону времени читаю http://javascript.ru/setTimeout , как только смогу выводить модальное окно с условием надо будет решить вопрос с отсчетом кол-ва просмотренных страниц.
Буду несказанно рад если вы поможете

Dim@ 23.06.2012 16:51

sergiocharm,
куки :dance:

sergiocharm 23.06.2012 16:57

я так и не понял, а при чем здесь куки? Задача упрощается, надо просто вывести модальное окно при закрытии клиентом сайта, просидев менее 5 секунд.
ДУмаю может не модальное окно а попап (вроде так называется)

Dim@ 23.06.2012 17:03

sergiocharm,
ёмаё
Цитата:

а при чем здесь куки?
да при том что можно на каждой страничке сайта писать куки (типа число или какую-нибудь такую вещь) и по уходу с форума посмотреть в куках какое там число (если два или меньше вывести модальное окно)
P.S. это при подсчете страниц сайта, а меньше пяти секунд это обычный setTimeout

Dim@ 23.06.2012 17:04

Цитата:

модальное окно с условием надо будет решить вопрос с отсчетом кол-ва просмотренных страниц.
вот для чего куки

sergiocharm 23.06.2012 17:06

Цитата:

а меньше пяти секунд это обычный setTimeout
это меня устроит, подсказать сможете как реализовать?

Dim@ 23.06.2012 17:12

sergiocharm,
вы вообще JavaScript не знаете? как реализовать? очень просто берете какую-нибудь переменную типа:
var ok = true;

и сетТаймаут
setTimeout('eval(ok = false)', 5000);

плюс обработчик, вот весь код:
var ok = true;
setTimeout('eval(ok = false)', 5000);
document.onunload = function(){
 if (ok !== true) Modal();
}

Modal() вызывает модальное окно
суть ясна?:)

sergiocharm 23.06.2012 17:15

щас посмотрю))


Часовой пояс GMT +3, время: 11:50.