当我通过 AJAX 将数据作为 JSON 发布到服务器时,来自表单元素的值以字符串(unicode)的形式出现。这是一个简单的例子:
<select id="test">
<option value=1>One</option>
<option value=2>Two</option>
<option value=3>Three</option>
</select>
像这样向服务器发送数据:
$('test').change(function(){
var id = $(this).val();
$.ajax(
{
type: 'POST',
contentType: 'application/json; charset=utf-8',
url: someUrl,
data: JSON.stringify(id:id),
dataType: 'json',
success: doSomething
});
然后在服务器上(Pyramid 1.3.3):
log.debug(type(request.json_body['id']))
给<type 'unicode'>
这使得代码类似于if request.json_body['id'] == 2
False,因为该值实际上是 u'2'。
我一直在id = int(request.json_body['id'])
为所有应该是整数的参数做,但是有更好的方法吗?我觉得我错过了一些明显的东西。