我正在尝试将一个Integer
从一个表单传递到一个Javascript
函数。我得到了这个值,可以像这样使用parseInt()
:
var student_age= parseInt($("#age").val());
然后将其存储为JSON,如下所示
"age": student_age
但是当我点击提交按钮时,我得到了一个Internal server error
。我将其跟踪到python代码的行,在该行中,我试图将值从表单传递到服务器。
student_age = int(self.request.get('age'))
这就是我得到ValueError: Invalid literal for int() with base 10: 'NaN'
的地方
我已经尝试过将"age": student_age
改为"age": str(student_age)
,但没有运气。
编辑: Python代码:
class StudentRegistrationHandler(webapp2.RequestHandler):
def post(self):
...
if student:
#do stuff
else:
student_age = int(self.request.get('age'))
...
发布于 2014-05-11 06:37:37
如果提供的字符串不是数字,parseInt
会给出数字或NaN。NaN是非A-数字的缩写.如果ValueError得到一个不是数字的字符串,int
就会引发int
。您有两种可能性:如果用户输入一个数字,并且只向服务器发送正确的请求,或者签入python代码,则签入Javascript,如果年龄参数确实是一个数字的话。最好两者兼得。
发布于 2014-05-11 07:20:00
从错误消息来看,您似乎试图使用Python中的"NaN"
(基10)将字符串int
转换为整数。这不起作用,因为Python不识别NaN。
在Python中,请求宽恕是没问题的
try:
student_age = int("NaN")
except:
student_age = -1 # impossible age but valid int fallback
现在有
student_age == -1
也没有例外
发布于 2014-05-11 18:14:54
最后,我发现我的code.It出了什么问题,这对我来说是个愚蠢的错误,我还有另一个变量声明为:
var year = parseInt($("year").val());
但我忘了在#
之前添加year
。由于这个变量是在student_age
变量之前声明的,所以我认为错误影响了这两个变量,我使用console.log()
测试了存储在这些变量中的内容,发现年龄有一个int,而年份是NaN。
https://stackoverflow.com/questions/23593826
复制