curiousIT:
AJAX POSTリクエストの後、私は私の見解から、変数に含まれるいくつかのリストの値を取得しようとしています。アイデアは、ドロップダウンを移入するために、これらの値を使用することです。しかし、私の変数が空のようです。私は「)リターン(レンダリング」私は最初に使用するので、それがあったと思ったが、でもそれは仕事をしません「リターンのHttpResponse()」で。
これは私のviews.pyです。
def MyView3(request):
if request.method == 'POST' and request.is_ajax:
myVariable = ["1", "2", "3", "4", "5"]
print(myVariable)
return HttpResponse(myVariable)
else:
return render(request,'home3.html')
これは私のhtmlコードです:
<form class="wrapper" action="" method="post"> {% csrf_token %}
<select name="myVal" class="toChange">
<option val="1">1</option>
<option val="2">2</option>
</select>
<select id="dep" name="dep">
{% for item in myVariable %}
<option val="{{ item }}"> {{ item }} </option>
{% endfor %}
</select>
<script type="text/javascript">
function dropdownChange () {
var selectedValue = $(".toChange option:selected").val();
$.ajax({
type: 'POST',
data: {'myVal': selectedValue},
});
var mylist = '{{myVariable}}';
alert(mylist);
}
$(".toChange").change(dropdownChange);
</script>
</form>
ここでの考え方は、私は私の「myVal」ドロップダウンに新しい値を選択すると、AJAX呼び出しをtrigerすることです。ビューが正しく動作しているため、コールは「プリント(myVariable変数)」が示すように、コンソールで期待された結果を動作します。また、私の警告ポップアップが表示されます。しかし、それが空です。I 'は[ "1"、 "2"、 "3"、 "4"、 "5"]' ので、 'myVariable変数' に含まれる値を表示するためにそれを必要とします。私はそれが何か簡単であるべきと仮定しますが、私は何を見つけ出すことができませんでした。あなたは助けを喜ばもらえますか?
Sohail:
あなたは、不足しているURL
との成功コールバックAjax
コールを。あなたは成功コールバックで応答を得ることができます。
ので、あなたは、アラートではnullを取得している$.ajax
非同期関数であり、前にアラートが表示されますajax
呼び出しが完了することができます。
以下の例を試してみてください。
例:
<script type="text/javascript">
function dropdownChange () {
var selectedValue = $(".toChange option:selected").val();
$.ajax({
url: "<add the url>"
type: 'POST',
data: {'myVal': selectedValue},
success: function(res) {
alert(res);
}
});
}
$(".toChange").change(dropdownChange);
</script>