Selaa lähdekoodia

[Web] Fix JSON parsing issue for api requests

FreddleSpl0it 5 kuukautta sitten
vanhempi
sitoutus
aac0a900ce
1 muutettua tiedostoa jossa 11 lisäystä ja 7 poistoa
  1. 11 7
      data/web/js/build/011-api.js

+ 11 - 7
data/web/js/build/011-api.js

@@ -158,9 +158,11 @@ $(document).ready(function() {
         var attr_to_merge = $(this).closest("form").serializeObject();
         var attr_to_merge = $(this).closest("form").serializeObject();
         // parse possible JSON Strings
         // parse possible JSON Strings
         for (var [key, value] of Object.entries(attr_to_merge)) {
         for (var [key, value] of Object.entries(attr_to_merge)) {
-          try {
-            attr_to_merge[key] = JSON.parse(attr_to_merge[key]);
-          } catch {}
+          if (typeof value === "string" && /^[\[\{"].*[\}\]"]$/.test(value.trim())) {
+            try {
+              attr_to_merge[key] = JSON.parse(attr_to_merge[key]);
+            } catch {}
+          }
         }
         }
         var api_attr = $.extend(api_attr, attr_to_merge)
         var api_attr = $.extend(api_attr, attr_to_merge)
       } else {
       } else {
@@ -271,9 +273,11 @@ $(document).ready(function() {
         var attr_to_merge = $(this).closest("form").serializeObject();
         var attr_to_merge = $(this).closest("form").serializeObject();
         // parse possible JSON Strings
         // parse possible JSON Strings
         for (var [key, value] of Object.entries(attr_to_merge)) {
         for (var [key, value] of Object.entries(attr_to_merge)) {
-          try {
-            attr_to_merge[key] = JSON.parse(attr_to_merge[key]);
-          } catch {}
+          if (typeof value === "string" && /^[\[\{"].*[\}\]"]$/.test(value.trim())) {
+            try {
+              attr_to_merge[key] = JSON.parse(attr_to_merge[key]);
+            } catch {}
+          }
         }
         }
         var api_attr = $.extend(api_attr, attr_to_merge)
         var api_attr = $.extend(api_attr, attr_to_merge)
       } else {
       } else {
@@ -312,7 +316,7 @@ $(document).ready(function() {
                 var key = localStorage.key(i);
                 var key = localStorage.key(i);
                 if(/formcache/.test(key)) {
                 if(/formcache/.test(key)) {
                   localStorage.removeItem(key);
                   localStorage.removeItem(key);
-                }  
+                }
               }
               }
             }
             }
           }
           }