Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > jquery $.getJSON


Автор: Aver78 6.11.2013, 16:21
Код

$.ajax({
    async : false,
    dataType: "json",
    url: 'http://domen?mod=up&callback=?',
    success: function(ret){
        alert('Получил');
    }
});

и php на domen
Код

    $a["a"]="aaaaaa";
  //  header('Content-Type: text/html; charset=utf-8');
    echo json_encode($a);

Хидер пробовал по разному, результат один.
firefox выдает ошибку - SyntaxError: missing ; before statement @ http://domen?mod=up&callback=jsonp1383743938168&_=1383743938209:1
Строка возращаемая выглядит так - {"a":"aaaaaa"}
Что за ошибка такая ? По первому впечатлению ошибка формата json. Но тут негде ошибаться.

p.s. опера выдает что надо добавить ; вместо :, но это вообще какая то чушь.
p.s.s. Посмотрел что тема не совсем соответсвует содержимому. там getjson а в описании $.ajax. Я пробовал оба варианта, ошибка одна и та-же. Просто скопировал пример с $.ajax.

Автор: Leshak 8.11.2013, 12:18
Ответа у меня нет, давно мучался с подобной проблемой и сейчас уже не найду текстов.

Есть такие мысли:
- какая версия jQuery ?
- у json не все так просто с форматом - были какие-то заморочки со скобками ({...})
- не помню почему, но с тех пор я не пользуюсь .ajax , а использую такое
- а без "хидера" нельзя...

Код

function exQ(string){   //  процедура для отправки запросов
                            // sUrl - мой адрес
    var Url = sUrl+'?'+ string ; //  формирование строки запроса
    testText( '<b> exQ::запрос:</b> '+Url+'<br>' ); //  ТЕСТОВЫЙ вывод
    jQuery.getJSON( Url, function(json, textStatus) { outShow(json, textStatus);});    
};


function outShow(o, textStatus){   //  удачное  завершение запроса 
    testText( "Статус запроса: <b> "+textStatus+"</b>" );  
// ----------------------------------------------------
    if(o.outList){
        testText( "Режим <b>outList</b><br>" );  
        outList.innerHTML = '<table id="oLtbl" border="0" ></table>';
        var t = document.getElementById('oLtbl');
        OutTabl(t,o.outList,0,'doShow');
    }else{
        testText( "Режим НЕ<b>outList</b><br>" );  
    }
    
// ----------------------------------------------------
    testText( "<b> end outShowList</b><hr>" );
} ; 

function testText(X){     //  собираем отладочную информацию
        $("#outTest").html( $("#outTest").html()+'<br>'+X ) ; 
} ;       //  TeST  !!!!!!!!!




- функция  testText  отправляет в  div outTest отладочную информацию


Автор: AVA12 8.11.2013, 13:54
А как выглядит сообщение об ошибке полностью? Особенно интересны имя файла и номер семнадцатой строки с ошибкой.

Автор: Aver78 13.11.2013, 14:34
Уже разобрался. Обращение было кросдоменным, что я не указал в описании так как посчитал ненужным. На самом деле это было важно.
p.s. Без хидера очень даже можно. Он генерируется автоматом. А я как раз завял использовать не ajax. Поди упомни что параметры всех урезанных функций типа .load, .post и т.д. Замороки в json были в переходе с любых кавычек на двойные, json_encode работает корректно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)