2016-05-08 2 views
0
document.getElementById('myform').addEventListener('submit', function (e) { 

// voorkomt de standaard actie van de submit 
e.preventDefault(); 
$(function() { 
    var artiest = document.getElementById("artiest"); 
    var rijen = document.getElementById("rij"); 
    var kolommen = document.getElementById("kolom"); 

    var CGIurl = 'http://localhost:8000/cgi-bin/schuifpuzzel.py?artiest=' + artiest.value + 
     "&rijen=" + rijen.value + "&kolommen=" + kolommen.value + "&callback=jsonp"; 

    $.ajax({ 
     type: 'GET', 
     url: CGIurl, 
     dataType: "jsonp", 
     success: function(data){ 
      console.log(data) 
     } 

    }); 

}); 
}); 

Я пытаюсь запустить этот AJAX, чтобы выполнить мой CGI скрипт, когда кнопка отправки нажата. Поэтому я использовал eventListener и preventDefault.AJAX обратных вызовов никогда не называла, не Сукчесом ни ошибкой

ГЭТ, кажется, работает хорошо, потому что эти результаты я получаю при тестировании в браузере

JSON в заголовках ответа является один я пытаюсь получить. Но по какой-то причине не удалось добиться успеха или ошибки в моем AJAX, поэтому у меня нет доступа к JSON.

ответ

2

Там две вещи я могу видеть, что неправильны:

  • данные ответа JSON отправляется в ответ заголовки, вместо ответа тело;
  • jQuery выполняет запрос JSONP, что означает, что ответ должен быть действительным Javascript (не JSON), который должен вызывать предоставленную функцию обратного вызова (если это не вызвано, jQuery не будет знать, что запрос имеет были завершены, поэтому вызовы success и error не вызываются);

Фиксация этого зависит от того, нужен ли вам JSONP. Если нет, просто используйте json в качестве типа данных и убедитесь, что данные JSON находятся в корпусе ответа. Если вам не нужно JSONP, ваш CGI скрипт должен обеспечить правильный ответ JS, который будет выглядеть примерно так:

jQueryXXX({ "content" : { "size" : ... } }); 

(где jQueryXXX должно быть значение параметра строки callback запроса)

+0

Я использую jsonp, потому что я читал, что это был способ легко обойти корс. И я не понимаю, почему данные отправляются в заголовки ответов. Я понятия не имею, как это исправить. – Joey

+1

@Joey, если вам нужно работать над междоменными границами, JSONP - это, вероятно, то, что вы должны использовать. Причина, по которой данные являются частью заголовков, состоит в том, что между заголовками и данными тела должна быть пустая строка. Как это сделать, зависит от вашей реализации сервера, но это может быть так же просто, как префикс строки JS с новой строкой. – robertklep

+0

Хорошо, поэтому одна проблема исправлена, теперь ответ показывает json. Я получаю «unsached SyntaxError: Неожиданный токен»: «Теперь. И все же ошибки/ошибки никогда не вызываются. Возможно, из-за синтаксической ошибки? – Joey

Смежные вопросы