我有以下代码,从一个简单的3输入表单中检索值:
//retrieves data from a form
var $form = $( this ),
prgname= $form.find('input[name="prg"]').val(),
startDate = $("#startdate").datepicker({ dateFormat: 'yy-mm-dd' }).val(),
endDate = $("#enddate").datepicker({ dateFormat: 'yy-mm-dd' }).val();
以下代码将请求发送到服务器:
^{pr2}$在服务器端使用python和webapp2im执行以下操作(这里是我不确定的地方)
import json
class PrgHandler(webapp2.RequestHandler):
def post(self):
prg= cgi.escape(self.request.POST['prg'])
start_date = cgi.escape(self.request.POST['start'])
end_date = cgi.escape(self.request.POST['end'])
#some code to write to db here
....
#if successful return a success message
if success:
success_msg = [{'class': 'success', 'msg': 'Successfully saved to the database'}]
else:
success_msg = [{'class': 'error', 'msg': 'Could not saved to the database'}]
data_string = json.dumps(success_msg)
self.response.headers.add_header('content-type', 'application/json', charset='utf-8')
self.response.write(data_string)
当我得到响应时,它会跳过success函数,直接转到错误。在
记录错误值没有任何意义:
the error is:
The text status is:error
The jqXHR is:[object Object]
Chrome的控制台显示错误:
Resource interpreted as Document but transferred with MIME type application/json:
我查了一下,上面的解决方案没有起作用,我认为这是服务器端代码的错误:
self.response.headers.add_header('content-type', 'application/json', charset='utf-8')
如果我把上面的一行注释掉,我在chrome中没有错误,我只会在一个空白页上返回正确值,格式如下:
[{"msg": "Successfully saved to the database", "class": "success"}]
在上面的情况下,它确实保存到数据库中,所以我似乎找不到任何错误,除了头,只是不知道如何继续!在
编辑 错误似乎是从服务器端删除了以下行: 事件.预防默认()
从我的脚本,它造成了所有的问题,现在至少我得到了一个明确的指示问题在哪里。这是由于错误地获取了已发布的数据,我该如何正确地进行?我尝试了以下方法:
json_data = self.request.GET.items()
decoded = json.loads(json_data)
但我收到了一个TypeError:预期字符串或缓冲区在以下行: json_数据=self.request.GET.项目()
好吧,所以我设法弄清楚了,我想我会发布一个对我有用的答案来帮助任何寻找这些信息的人,因为webapp2文档在“获取”发布的json数据时没有那么大帮助。在
在客户端,我做了以下工作:
我不能马上找出问题的原因是因为我删除了下面的一行,还有一些注释掉的行,它阻止了页面在发布后重定向。这就是所有奇怪、无关且毫无帮助的错误消息的来源:
^{pr2}$在服务器端,要获取发布到appengine的json数据,请执行以下操作:
以上是问题的根源,我做得不对,没有客户端的前一行就没有办法解决它。在
不管怎样,一旦数据完成了需要对其进行的任何处理,一旦完成并需要发回json响应,请添加以下行:
几乎忘记了在客户端使用jquery访问从服务器返回的变量,这是非常直接的…请执行以下操作:
希望这将有助于寻求这些信息的人。在
看看你的调试器。您在帖子中收到一个JSON字符串(webapp2 multidict)。必须用这个字符串解码json.loads,生成一个python对象。在
以下是用于发送和接收json的jquery代码:
相关问题 更多 >
编程相关推荐