Несколько кнопок в одной форме запроса с Flask + Jquery + Ajax - PullRequest
0 голосов
/ 18 февраля 2020

Это мой myindex. html файл, в котором у меня есть 2 кнопки для 2 разных запросов. Обе кнопки имеют одну и ту же текстовую область в качестве ввода.

<script type="text/javascript">

 jQuery(document).ready(function($)
 {
    var textbox = document.getElementById('textarea');
    var dropdown = document.getElementById('dropdown');

    dropdown.onchange = function() {
     var dropdownValue = dropdown.options[dropdown.selectedIndex].value;
     textarea.value = dropdownValue;
    }
   });
   jQuery(document).ready(function($)
   {
      $.fn.callsm = function()
      {
        alert('You have successfully defined the function!')
      }
      $(".callsm").click(function()
      {
        var request_body = $("#textarea").val()
        console.log(request_body)
        $.ajax
        ({
            type: 'POST',
            url: "/invocations",
            data : request_body,
            headers: 
            {
                    'Content-Type': 'text/plain'
            }
         }).done(function(data) 
         {
          //DO SOMETHING  
         }
            }).fail(function(data) 
            {
                console.log('fail: '+data);
            });

     });

    $.fn.calldm = function()
      {
        alert('You have successfully defined the function!')
      }
      $(".calldm").click(function()
      {
         var request_body = $("#textarea").val()
         console.log(request_body)

         $.ajax
         ({
            type: 'POST',
            url: "/invocations",
            data : request_body,
            headers: 
            {
                    'Content-Type': 'text/plain'
            }
            }).done(function(data) 
            {
                //DO SOMETHING
            }).fail(function(data) 
            {
                console.log('fail: '+data);
            });

       });

    });

    </script>

     <form name="myform" action="/invocations" method = "post">

    <select id="dropdown">
        <option value=" ">leer</option>
        <option value=" Hi, I am dataplumber">option1</option>
    </select><br><br>
      <textarea rows="20" cols="50" id="textarea" name="textarea"></textarea><br>
      <button type="button" id="document" class="calldm" name="document">Call DM</button>
      <button type="button" id="sentence" class="callsm" name="sentence">Call SM</button>


    </form>

Ниже приведен мой файл app.py

@app.route("/invocations", methods=["POST"])
def invocations():
    if "document" in request.form:
        url = 'http://XXXX/invocations'
        //DO SOMETHING
        return x.content
    elif "sentence" in request.form:
        //DO Something
        return x.content.decode('utf-8')
    else:
            return render_template('myindex.html')

Но мой код python не работает, так как ImmutableMultiDict пуст. Если я удаляю if if else из python и вызываю документ и предложение по отдельности, это завершается успешно .. Я здесь что-то не так делаю.

1 Ответ

0 голосов
/ 18 февраля 2020

Вы не отправляете форму, поэтому ваши данные будут в request.data вместо request.form.

...