У меня есть путаница в отношении того, как серверы (механизм приложения) реагируют на запросы AJAX GET и POST. Я хочу отправить запрос GET на свой сервер и вернуть данные JSON.Ответы на запросы AJAX GET и POST с Google App Engine (Python)
Вот это AJAX GET Request
function syncRestoreLinks(e) {
var request = new XMLHttpRequest();
var url = "/sync"
request.open("GET", url);
request.setRequestHeader("Content-Type", "application/json");
request.onreadystatechange = function() {
if (request.readyState === 4) {
console.log(request.responseText);
}
}
request.send(null);
console.log("Getting links from db");
}
Handler на стороне сервера
class SyncHandler(Handler):
def get(self):
response_data = {"loggedIn":False, "linkData":None, "success":False}
json_txt = json.dumps(response_data)
self.response.headers['Content-Type'] = 'application/json; charset=UTF-8'
self.response.out.write(json_txt)
def post(self):
response_data = {"loggedIn":False, "linkData":None, "success":False}
json_txt = json.dumps(response_data)
self.response.headers['Content-Type'] = 'application/json; charset=UTF-8'
self.response.out.write(json_txt)
Этот обработчик записывает мои данные ответа к экрану, где, как я хочу, чтобы отправить его обратно, и пусть JS справится с этим. (Я могу использовать переадресацию сервера здесь.)
Если я делаю запрос POST, код работает так, как я его намерен. Но здесь я не могу делать перенаправления серверов или страниц рендеринга, и этот контроль имеет только запрос на выполнение скрипта.
Это как работает ответ GET/POST, или я делаю что-то глупое в своем коде?
Есть ли способ для ответа GET не писать на странице и не отправляться в JS? В приведенном выше коде responseText представляет собой пустую строку, но json выводится на экран.
Вы используете webapp2 для связывания url '/ sync' с' SyncHandler'? –
yes, webapp2 и python 2.7 –