我对服务器(此处为应用引擎)如何响应AJAX GET和POST请求感到困惑。我想向我的服务器发送一个GET请求并获取一些JSON数据。
这是AJAX GET请求
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");
}
服务器端的处理程序
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显示在屏幕上。
我正在使用App Engine成功完成AJAX获取请求。
您的同步处理程序看起来正确。您确定它被调用了吗?在其中添加一条logging.info()
语句以确保。如果正在调用它,那么我怀疑该错误在前端。我使用的不是jQuery,XMLHttpRequest
所以您不能为您提供帮助。我的jQuery调用看起来像这样:
$.get(url, callback_function, 'json');
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句