소스 검색

[Web] Fix JSON parsing issue for api requests

FreddleSpl0it 5 달 전
부모
커밋
aac0a900ce
1개의 변경된 파일11개의 추가작업 그리고 7개의 파일을 삭제
  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();
         // parse possible JSON Strings
         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)
       } else {
@@ -271,9 +273,11 @@ $(document).ready(function() {
         var attr_to_merge = $(this).closest("form").serializeObject();
         // parse possible JSON Strings
         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)
       } else {
@@ -312,7 +316,7 @@ $(document).ready(function() {
                 var key = localStorage.key(i);
                 if(/formcache/.test(key)) {
                   localStorage.removeItem(key);
-                }  
+                }
               }
             }
           }