作成しているWebサイトにいくつかの基本的なajax機能を実装しようとしています。これを行うために、FlaskマイクロフレームワークとjQueryを使用しています。私はPython、Flaskが書かれているものについて多くの経験がありますが、javascriptについてはほとんど経験がありません。これが、jQueryを使用することにした理由です。;)Flaskのドキュメントに含まれている素晴らしい例がありますが、問題なく動作しましたが、例のメソッドをコードに適用すると、jQueryでクエリ文字列を正しく入力する際に問題が発生し始めました。基本的に、フォーム要素の一部を解析しますが、すべてを解析するわけではありません。
私のHTMLフォームは次のようになります。
<form action method="GET" class="span-11 inline">
<fieldset>
<div class='span-5'>
<label for="msat_size">Msat Size:</label>
</div>
<div class='span-5 last'>
<select id="msat_size" name="msat_size"><option value="mono">Mono</option><option value="di">Di</option><option value="tri">Tri</option></select>
</div>
<div class='span-5'>
<label for="msat_length">Msat Length:</label>
</div>
<div class='span-5 last'>
<input class="text" id="msat_length" maxlength="3" name="msat_length" size="3" style="width:48px" type="text" value="0" />
</div>
<div class='span-5'>
<label for="msat_perfect">Perfect Msats:</label>
</div>
<div class='span-5 last'>
<input id="msat_perfect" name="msat_perfect" type="checkbox" value="y" />
</div>
<div class='span-5'>
<label for="combine_loci">Combine Microsatellites:</label>
</div>
<div class='span-5 last'>
<input id="combine_loci" name="combine_loci" type="checkbox" value="y" />
</div>
<div class='span-5'>
<label for="design_primers">Design Primers:</label>
</div>
<div class='span-5 last'>
<input id="design_primers" name="design_primers" type="checkbox" value="y" />
</div>
<div class='span-5'>
<label for="tag_primers">Tag Primers:</label>
</div>
<div class='span-5 last'>
<select id="tag_primers" name="tag_primers"><option selected="selected" value="None">No Tag</option><option value="cag">CAG Tag</option><option value="m13">M13R Tag</option></select>
</div>
<div class='span-5 prepend-5 last'>
<button id="submit_msats" name="submit_msats" type="submit" value="submit_msats" class="button positive">
<img src="/static/css/plugins/buttons/icons/tick.png" alt=""/> Submit
</button>
</div>
</fieldset>
</form>
私のJavaScriptは次のようになります。
<script type=text/javascript>
$(function() {
$('.button').bind('click', function() {
$.getJSON('/query_result', {
msat_size: $('input[id="msat_size"]').val(),
msat_length: $('input[name="msat_length"]').val(),
msat_perfect: $('input[name="msat_perfect"]').val(),
combine_loci: $('input[name="combine_loci"]').val(),
design_primers: $('input[name="design_primers"]').val(),
tag_primers: $('input[name="tag_primers"]').val(),
}, function(data) {
$("#stat1").text(data.msat_size),
$("#stat2").text(data.msat_length);
});
return false;
});
});
</script>
しかし、クエリ文字列を送信すると、次のようになります。
/query_result?msat_length=0&msat_perfect=y&combine_loci=y&design_primers=y
'msat_length'値を適切に変更することができますが、他の値はありません。javascriptの'msat_size'行で.val()を.text()に変更すると、名前はクエリ文字列に表示されますが、値は表示されません
/query_result?msat_size=&msat_length=0&msat_perfect=y&combine_loci=y&design_primers=y
これを修正する方法についての考えは大歓迎です。ありがとう!