Подтвердить что ты не робот

$.ajax и JSONP. ParseError и Uncaught SyntaxError: Неожиданный токен:

Прежде всего, я искал ответ на свою проблему в нескольких темах, и я не мог найти решение, которое работает с моим кодом.

Я пытаюсь получить ответ от сервлета, если я перейду к http://XXXZZZ/Servlet/Login?login=pepe&pass=1234, я получаю действительный JSON, как ожидалось:

{"id":3,"login":"pepe","key":"0D1DBA4BE87E02D43E082F9AA1ECFDEB"}

Но когда я пытаюсь сделать то же самое с $.ajax, я получаю 2 ошибки.

$.ajax({
    type : "Get",
    url :"http://XXXZZZ/Servlet/Login",
    data :"login="+login+"&password="+pass,
    dataType :"jsonp",
    success : function(data){
    alert(data);},
    error : function(httpReq,status,exception){
    alert(status+" "+exception);
    }
});

Первая ошибка (во всплывающем окне):

parsererror Error: jQuery17104145435250829905_1336514329291 was not called

Вторая ошибка (в консоли Chrome):

Uncaught SyntaxError: Unexpected token : Login 1

(И есть JSON, которого я жду).

P.S. Я должен использовать dataType: "jsonp", потому что, если я использую "json", у меня также возникают проблемы с кросс-доменом.

4b9b3361

Ответ 1

Если вы используете jsonp, тогда синтаксис неверен

Вам нужно вернуть

myJsonMethod({"id":3,"login":"pepe","key":"0D1DBA4BE87E02D43E082F9AA1ECFDEB"});

а также добавьте в свои параметры запроса ajax

jsonp: false,
jsonpCallback: "myJsonMethod"

так

$.ajax({
    type : "Get",
    url :"http://XXXZZZ/Servlet/Login",
    data :"login="+login+"&password="+pass,
    dataType :"jsonp",
    jsonp: false,
    jsonpCallback: "myJsonMethod",
    success : function(data){
        alert(data);},
    error : function(httpReq,status,exception){
        alert(status+" "+exception);
    }
});

(и, конечно, зафиксируйте success как @voyager)

Ответ 2

succes : function(data){

Это опечатка:

success : function(data){

Ответ 3

Сначала у вас есть опечатка в параметре успеха; вы пропустили финал s. Кроме того, когда вы выполняете запрос JSONP, вам необходимо вернуть информацию JSON в формате JSONP; который должен включать токен обратного вызова как часть возвращаемой строки. Пример строки JSONP будет выглядеть так:

yourcallbacktoken({"id":3,"login":"pepe","key":"0D1DBA4BE87E02D43E082F9AA1ECFDEB"})

Взгляните на эту страницу для получения дополнительной информации о спецификациях JSONP: http://devlog.info/2010/03/10/cross-domain-ajax/