Ajax JSONP Parseerror-Callback-Call-Not-Called с Tomcat 9 - PullRequest
1 голос
/ 20 марта 2019

У меня проблема с использованием моего сервлета tomcat. Я пытаюсь выполнить кросс-сайт-скрипт на локальном хосте с помощью jsonp. Я пытаюсь получить доступ к локальному серверу с помощью ajax / javascript следующим образом:

$.ajax({
    url: 'http://localhost:8080/tomtest/test',
    type: 'GET',
    crossDomain: true,
    jsonp: 'callback',
    jsonpCallback: 'mycallback',
     async: false,
    dataType: 'JSONP',

    success: function(data) {
        console.log(data);
        },
        error: function (request, textStatus, errorThrown) {
        console.log('Error');   console.log(request.status);
        console.log(request.statusText); console.log(request.readyState);
        console.log(textStatus);  console.log(errorThrown);
    }});


mycallback = function(data){alert(data);};

Мой сервер (tomcat-servlet-java) ответит примерно так:

    PrintWriter out = response.getWriter();
    response.setContentType("application/javascript");
    response.setCharacterEncoding("UTF-8");
    out.print(jsonAnswer);
    out.flush();

Использование Firefox, чтобы увидеть ответ, который я получил от сервера:

введите описание изображения здесь

Возникла какая-либо проблема с синтаксическим анализом перед SyntaxError: неожиданный токен: ':'. Как я могу разобрать ответ в JSON на сайте клиента? Я не мог решить это с другими вопросами.

1 Ответ

0 голосов
/ 20 марта 2019

Я решил это.Кажется, я должен дать имя функции mycallback на сервере. "mycallback (" + jsonAnswer + ")" Работает.

`   PrintWriter out = response.getWriter();
    response.setContentType("application/javascript");
    response.setCharacterEncoding("UTF-8");
    out.print("mycallback("+jsonAnswer+")");
    out.flush();`
...