- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Может кто поможет советом, почему не подгружаются на стороне клиента данные по JSON?
Есть код на стороне клиента:
Вот код файла widget.js:
(function() {
var jQuery;
if (window.jQuery === undefined || window.jQuery.fn.jquery !== '1.7.1') {
var script_tag = document.createElement('script');
script_tag.setAttribute("type", "text/javascript");
script_tag.setAttribute("src", "http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js");
if (script_tag.readyState) {
script_tag.onreadystatechange = function () {
if (this.readyState == 'complete' || this.readyState == 'loaded') {
scriptLoadHandler();
}
};
} else {
script_tag.onload = scriptLoadHandler;
}
(document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag);
} else {
jQuery = window.jQuery;
main();
}
function scriptLoadHandler() {
jQuery = window.jQuery.noConflict(true);
main();
}
function main() {
jQuery(document).ready(function($) {
var ss = document.createElement('div');
ss.setAttribute("id", "sd");
document.getElementsByTagName("body")[0].appendChild(ss);
$.getJSON("http://site.ru/widget.php", function(data) {
$('#sd').html(data.html);
});
});
}
})();
И вот собственно файл widget.php:
<?header("Content-Type:text/javascript;charset=windows-1251");
$arData = Array(
"html" => "sdfsd sdffsdfsdfsdfsfd"
);
echo "? ( " . json_encode($arData) . " )";
?>
По идее должно пользователю в браузере в созданный динамически div подгрузить тестовые данные. Но этого не происходит. Если же заменить http://site.ru/widget.php на http://al.smeuh.org/cgi-bin/webwidget_tutorial.py?callback=? то все работает (данные подгружаются).
в код особо не смотрел, но есть 2 момента:
1. jQuery подключен? если нет, то подключите перед этим скриптом.
2. в файле пхп вместо
поставьте просто
1. jQuery подключен? если нет, то подключите перед этим скриптом.
jQuery здесь автоматически подгружается в файле widget.js. Не важно подключен ли он на стороне клиента или нет.
2. в файле пхп вместо
Цитата:
echo "? ( " . json_encode($arData) . " )";
поставьте просто
Цитата:
echo json_encode($arData);
На сколько мне известно, то JSON должен возвращать некоторую функцию (либо как в моем примере анонимную функцию). Поэтому убирать там ничего не надо.
На сколько мне известно, то JSON должен возвращать некоторую функцию (либо как в моем примере анонимную функцию). Поэтому убирать там ничего не надо.
Вам стоит освежить знания про JSON http://ru.wikipedia.org/wiki/JSON
http://learn.javascript.ru/json
Да и анонимная функция выглядит немного иначе, а это не пойми что, то ли тернарное выражение то ли еще что.
---------- Добавлено 12.05.2014 в 15:35 ----------
Раз уж юзаете jquery
Вам стоит освежить знания про JSON http://ru.wikipedia.org/wiki/JSON
http://learn.javascript.ru/json
Да и анонимная функция выглядит немного иначе, а это не пойми что, то ли тернарное выражение то ли еще что.
Ошибся. Не спец. в JSON.
Раз уж юзаете jquery
Код:
var ss = $('<div>').attr('id', 'ss');
$('body').append(ss);
Оптимизация кода, дело последнее. Важнее заставить все работать правильно.
В общем решил проблему. Необходимо в скрипте php (в моем случае это widget.php) в заголовки добавить
header("Access-Control-Allow-Origin: *");Вместо звездочки может быть любой домен, которому разрешен доступ к данным.