簡體   English   中英

如何將帶有嵌入式對象的對象從JavaScript(jQuery / ajax)傳遞給Python(Flask)?

[英]How can I pass an object with an embedded object from JavaScript (jQuery/ajax) to Python (Flask)?

我試圖將結構化數據從網頁傳遞到燒瓶處理程序,但出現關鍵錯誤。

在網頁的JavaScript中,我有一個包含兩個元素的對象,一個是值,另一個是對象。

問題出在Flask / Python方面。 我可以這樣獲得第一個元素( "cid" ):

print request.form ["cid"]

這樣可行。 但是,我無法訪問或獲取任何att(ribute)值( "att" )。

因此, request.form ["att"]返回KeyError: 'att'

我可以訪問request.form["att[sw1]"]但是這使我的數據類型扁平化。

我想以列表或字典的形式獲取att元素,以便可以在應用程序中遍歷它們。 我本質上想要request.form["att"]["sw1"]request.form.att["sw1"]

   var controllerData = {
              sw1  : $('#sw1').val(),
              sw2  : $('#sw2').val(),
              sw3  : $('#sw3').val(),
              sw4  : $('#sw4').val()}

   var updateData = {cid : 1, att: controllerData };

   $.ajax({
     type: "POST",
     url:  "/SetSettings",
     data: updateData,
     success: function(d) { },
     error: function(d) {alert('Error saving settings!');},
     dataType: "json"
   });

您必須使用JSON.stringify()將數據對象序列化為字符串。

$.ajax({
   type: "POST",
   url:  "/SetSettings",
   data: JSON.stringify(updateData),
   success: function(d) { },
   error: function(d) {alert('Error saving settings!');},
   dataType: "json"
});

PS:某些對象,例如window或包含循環依賴關系的對象,無法以這種方式序列化

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM