- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
使用 ajax
我正在尝试将数据发送到我的 Tornado 服务器,这是我的 JQuery:
$("#addTask").submit(function(e){
e.preventDefault();
var add = $('#addProject').val();
var added={projectAdded:add};
$.post("/task",
JSON.stringify(added),
function(data){
window.location.reload(true);
});
});
$('#addProject').val();
的值来自输入文本字段:
$('<div class="input-group col-sm-7"><input type="text" form="task" class="form-control" id="addProject" name="projectAdd" value="" placeholder="New tag">
<button type="submit" name="addTag" value="addTag" form="task" id="addTask"></button> </div>').appendTo('#proj');
在我的 Tornado 服务器中我有:
class TaskAddHandler(BaseHandler):
def post(self):
addProj = json.loads(self.request.body)
print 'NEW TASK', addProj
但这给了我错误:raise ValueError("No JSON object could be decoded")
,而不是输入文本字段的值。
ValueError:无法解码 JSON 对象
最佳答案
数据在 self.request.arguments
中。此外,您需要向客户端返回有效的 json。
class AjaxHandler(tornado.web.RequestHandler):
def post(self):
my_data = self.request.arguments['test_data']
# do something with my_data
self.write(json.dumps({'status': 'ok'}))
self.finish()
处理程序的 self.write(json.dumps({'status': 'ok'}))
响应对于完成与客户端的事务是必要的:任何有效的 json 都可以;内容是什么并不重要。 (如果客户端似乎没有取回 json,请参阅 this answer。)
也可能是 run_server.py
中 settings
中的 _xsrf_cookies: True
。如果是这种情况,ajax
请求本身将被 Tornado 阻止(您将在控制台上看到 400 Bad Request
)。
为了解决这个问题,“XSRF
token 可能...通过名为 X-XSRFToken
的 HTTP
header 传递,”说doc .通过self.xsrf_token
包含或调用该ajax
逻辑的任何页面的get
设置cookie。文档说,这样做“足以将 cookie 设置为副作用”:
class PageHandler(tornado.web.RequestHandler):
def get(self):
self.xsrf_token
self.render('page.html')
然后可以在客户端中获取 cookie(这里通过 jQuery $.cookie plugin ):
var token = $.cookie('_xsrf');
在调用中将 token 作为自定义 headers
参数嵌入:
$.ajax({
url: '/task',
headers: {'X-XSRFToken' : token },
data: {'test_string': 'test success'},
dataType: "JSON",
type: "POST",
success: function ( data , status_text, jqXHR) {
alert('ajax success')
},
error: function ( data , status_text, jqXHR ) {
alert('ajax fail')
},
});
或者,您也可以将其作为data
中的字段之一。 (如果您正在 ajax
将 JavaScript 对象作为您的字段之一,您应该 JSON.stringify
它以获得一个很好的-返回服务器端的结构化 dict
:
var packet = {"_xsrf": $.cookie("_xsrf"), "test_string": "test success", "js_obj": JSON.stringify(js_obj)};
$.ajax({
url: '/task',
data: packet,
dataType: "JSON",
type: "POST",
success: function ( data , status_text, jqXHR) {
alert('ajax success')
},
error: function ( data , status_text, jqXHR ) {
alert('ajax fail')
},
});
在sample chat app中还有一个管理_xsrf_cookies
的例子。在 doc 中提及.
关于jquery - Tornado 无法读取 json ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26896679/
根据一些谷歌搜索,我安装了以下错误处理程序。然而,似乎返回 http 500 的 python 异常并没有被这些东西捕获,尽管 404 是这样。通过我在下面的代码中留下的打印语句,我可以看到它没有命中
我刚刚意识到 WebSocketHandler.write_message() 返回一个 Future。我以前没有在我的函数中产生过这个函数: @tornado.gen.coroutine
这是我的 Tornado 文件:: from tornado.wsgi import WSGIContainer from tornado.ioloop import IOLoop from torn
class MainHandler(BaseHandler): @tornado.web.authenticated def get(self): self.rende
我正在尝试使用 AsyncHTTPTestCase 测试 Tornado .我想测试标有 @tornado.web.authenticated 注释的处理程序。因为此处理程序需要身份验证,所以我们必须
我正在使用 Tornado Web Server (版本 4.1)使用 Python 2.7 创建 REST Web 应用程序。我的请求处理程序之一 (web.RequestHandler) 使用多部
我想知道tornado 的内部工作流程,并且看过this article ,很好,但我就是想不通 ioloop.py里面有这样一个函数 def add_handler(self, fd, handle
如何遍历从 Python/Tornado 处理程序传递到 Tornado 模板的字典? 我试过 {% for key, value in statistics %}
我有一个 Tornado 后端,为 Angular 前端提供服务。更新数据库时,tornado api 不会获取更新的数据。它仅在我重新启动服务器后出现。有人可以帮我解决这个问题吗?我希望获取的数据能
我尝试使用自定义的 WSGIContainer 来处理异步操作: from tornado import httpserver, httpclient, ioloop, wsgi, gen @gen.
from tornado.web import RequestHandler class HelloWorldHandler(RequestHandler): def get(self):
Pylint 遇到 @tornado.web.authenticated 时崩溃 class Handler1(tornado.web.RequestHandler): def get(sel
经过 tornado.gen documentation有人可以帮我理解 tornado.gen.coroutine 和 tornado.gen.engine 之间的确切区别 最佳答案 正如 gen.
代码如下: from tornadoredis import Client from tornado.ioloop import IOLoop from tornado.gen import coro
我有一个 tornado.websocket.WebSocketHandler 的子类。在该类中,我有一个方法使用 Django ORM 从子类模型中获取用户:django.contrib.auth.
我是 ssl 之类的新手,我已经使用 openssl 生成了自签名证书。 openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days
我已经从 tornado 4.2 移动到 tornado 6.0.3,我得到了错误 AttributeError:模块“tornado.web”没有属性“异步” 根据 tornado v6 seems
我一直在关注此 ( https://developer.ibm.com/tutorials/se-distributed-apps-zeromq-part2/) 教程,以设置使用 CurveZMQ 加
我在使用tornado-celery整合tornado和celery时,出现错误:``` traceback (most recent call last): File "/usr/local/l
我正在使用 Tornado 与 twitter 等第三方进行身份验证。 我的登录处理程序看起来像这样 class AuthLoginHandler(BaseHandler, tornado.auth.
我是一名优秀的程序员,十分优秀!