使用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();
的值来自输入文本字段:
在我的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: No JSON object could be decoded
,而不是输入文本字段的值。在
我认为您需要发送一个JSON字符串作为数据,而不是对象。尝试JSON.stringify({pro添加对象:添加})而不仅仅是对象。在
数据位于
self.request.arguments
。此外,还需要向客户端返回有效的json。在处理程序的
self.write(json.dumps({'status': 'ok'}))
响应对于完成与客户机的事务是必需的:任何有效的json都可以;内容是什么并不重要。(如果客户机似乎没有取回json,请参阅this answer。)也可能是
_xsrf_cookies: True
在你的settings
内run_server.py
。如果是这样,ajax
请求本身将被Tornado阻止(您将在控制台上看到400 Bad Request
)。在为了解决这个问题,
^{pr2}$XSRF
令牌可能。。。通过名为HTTP
的HTTP
头传递,doc表示。通过get
的页面包含或调用ajax
逻辑的get
设置cookie。医生说,这样做“足以将cookie设置为副作用”:然后可以在客户机中获取cookie(这里通过jQuery$.cookie plugin):
在调用中嵌入标记作为自定义
headers
参数:或者,也可以将其作为
data
中的一个字段。(如果您要ajax
将一个JavaScript对象作为一个字段,那么为了在服务器端获得一个结构良好的dict
,您应该JSON.stringify
它):还有一个在doc中引用的sample chat app中管理
_xsrf_cookies
的示例。在相关问题 更多 >
编程相关推荐