Djangoは:AJAX呼び出しの後、私のビューから変数を取得することはできません

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>

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=281183&siteId=1