php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Max-Age: 1000');
header('Content-Type: application/json; charset=utf-8');
echo 'online({"usr":"Admin","prj":"текст"}, {"usr":"Admin2","prj":"текст2"})';
Его нужно распарсить и вставить, как мне кажется циклом в div. Должно быть в итоге.
<font title="текст">Admin</font>, <font title="текст2">Admin2</font>
Что смог сделал - код представляю вам ниже. Цикл не возвращает ничего
$.ajax({
url: 'online.php',
dataType: 'jsonp',
jsonpCallback: 'online',
crossDomain: true,
type: 'GET',
data: {'online': 'show'},
cache: false,
success: function(data){
i = 0;
while ( i < data.length )
{
alert(data[i].usr);
i++;
}
}
});
Пофантазирую.
Если вы получаете ответ от стороннего скрипта, то в том виде, который вы указали он неправильный. Но если вы не можете на это повлиять, придется принудительно парсить
var obj = jQuery.parseJSON('[' + data + ']');
Если скрипт ваш, то тогда нужно добиться выдачи валидного JSON объекта (или массива) со стороны сервера
Добавлено После редактирования вопроса стало понятнее. У вас неправильно обрабатывается JSONP ответ. Ответ будет загружен в виде скрипта и будет вызвана функция online с двумя параметрами. И объявлять success не имеет смысла. Еще, если вы хотите в цикле перебирать объекты, сделайте так, чтобы в функцию передавался массив
echo 'online([{"usr":"Admin","prj":"текст"}, {"usr":"Admin2","prj":"текст2"}])';
На стороне браузера должна быть функция типа:
function online(users) {
for (var ix = 0, len = users.length; ix < len; ix += 1) {
// делаем что-то с users[ix]
}
}
Попробуй так:
success: function(data) {
var obj = jQuery.parseJSON(data);
...
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости