AJAXを介してJSONとしてサーバーにデータを投稿すると、フォーム要素からの値は文字列(ユニコード)になります。簡単な例を次に示します。
<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
値は実際にはu'2'であるため、これによりコードはFalseのようになります。
私はid = int(request.json_body['id'])
intであるはずのすべてのパラメータに対して実行してきましたが、より良い方法はありますか?明らかな何かが欠けているような気がします。