मान लीजिए कि आपके पास जावास्क्रिप्ट में एक सरणी है - [1,2,3] और आप इसे AJAX पोस्ट के माध्यम से फ्लास्क में भेजना चाहते हैं। ताकि जेएस में:

array = new Array()
array.push(1);
array.push(2);
array.push(3);

       var data = JSON.stringify(array);
      $.ajax({
        type: "POST",
        url: "myurl",
        data: data,
        dataType: 'JSON',
        success: alert("messagesent!")
    })

और फ्लास्क दृश्य में:

@bp.route('myurl',methods=['GET', 'POST'])
def myfunction(address):
    if request.method == "POST":
        FirstSet = request.form['data']
        x = json.loads(FirstSet)

हालाँकि अब मैं नहीं जानता कि x सूची (?) के विशेष मूल्यों का उपयोग कैसे किया जाए, क्योंकि इसे इस तरह से एक्सेस करने का प्रयास किया जा रहा है:

print(x[1]) 

काम नहीं करता... इसे देखने के लिए अग्रिम धन्यवाद :)

संपादित करें: बड़ी तस्वीर: मैं AJAX अनुरोध पर क्लिक करता हूं लेकिन जब मैं उन सभी मानों को जोड़ता हूं जिन्हें मैं उस सरणी में जोड़ना चाहता हूं जिसे मैं भेजना चाहता हूं। यह इस तरह दिख रहा है:

  $("#firstSet").on("click",function(){
      array =[]
      $("#myDiv").children().each(function()
      {
        var star = $(this).children("li.star.selected").length
        array.push(star)
      })
      alert(array)
      $.ajax({
        type: "POST",
        url: "myurl",
        data: {"data":array},
        success: alert("messagesent!")
    })

})

यह सतर्क सरणी कोई नहीं टाइप नहीं है (और मुझे सिर्फ मेरे सरणी मान मिलते हैं) लेकिन मुझे फ्लास्क पक्ष में जो मिलता है वह एक खाली सूची या कोई नहीं है (मैं इसे कैसे अनुरोध करता हूं इसके आधार पर)

0
kikatuso 29 जिंदा 2020, 18:57

1 उत्तर

सबसे बढ़िया उत्तर

चूंकि आप JSON भेज रहे हैं, इसलिए आपको उस JSON को उचित नाम .get_json():

        # ...
        FirstSet = request.get_json()

तब FirstSet में होगा:

[1, 2, 3]

यह भी सुनिश्चित करें कि आपके AJAX के पास उपयुक्त contentType है:

        // ...
        contentType: "application/json",
        dataType: "JSON"

संपादित करें: मैं उन सभी जावास्क्रिप्ट/JQuery को शामिल कर रहा हूं जिनके साथ मैं परीक्षण कर रहा हूं यदि यह आपकी मदद करता है। मैंने सब कुछ एक डोम तैयार समारोह में लपेट लिया।

    <script>
    $(document).ready(function() {
        $("#firstSet").on("click",function(){
            array = [];
            var listItems = $("#myDiv li");
            listItems.each(function(idx, li) {
                var star = $(li);
                array.push(star.length);
            });
            alert(array);
            $.ajax({
                type: "POST",
                url: "/testing",
                contentType: "application/json",
                dataType: "JSON",
                data: JSON.stringify(array)
            });
        });
    });
    </script>

और एचटीएमएल:

  <button id="firstSet" name="firstSet">testing</button>
  <div id="myDiv" name="myDiv">
    <ul id="myList">
      <li data-value="1"><a href="#">1</a></li>
      <li data-value="2"><a href="#">2</a></li>
      <li data-value="3"><a href="#">3</a></li>
    </ul>
    <input id="listChoice" size="15" name="size" type="text" />
  </div>

और फ्लास्क कोड:

@bp.route('/testing',methods=["GET","POST",])
def testing():
    if request.method == "POST":
        print(request.get_json())
    return render_template('testing.txt')
0
mechanical_meat 30 जिंदा 2020, 05:04