簡體   English   中英

'Uncaught SyntaxError: Unexpected token x in JSON at position 1' 嘗試解析 HTML 嵌入字符串 JSON 時

[英]'Uncaught SyntaxError: Unexpected token x in JSON at position 1' when trying to parse HTML embeded string JSON

我一直在嘗試將硬編碼的 JSON 字符串解析為可用的格式,但我找不到讓它工作的方法,得到“意外令牌”或只是奇怪的輸出。 使用的庫: jQuery 要存儲的數據是:

x:10
y,10

x:200
y:10

它存儲在名為data-posdata屬性中,我嘗試了多種解決方案,如下所列:

  • 令牌錯誤結果(所有組合)

使用的功能

JSON.parse(data);
$.parseJSON(data);
jQuery.parseJSON(data);

數據格式

data-pos="{'x':10,'y':10}"
data-pos="{'x':'10','y':'10}"
data-pos="{x:'10',y:'10'}"
data-pos="{x:10,y:10}"
  • 只是奇怪的輸出(沒有解析)

使用的功能

alert(data);
    --> output: 
        !!DATA AS IS!!
        !!DATA AS IS!!

alert ('x: ' + data.x + ' y: ' + data.y); /* Using {x: 200, y: 10} format */
    --> outputs:
        x: undefined y: undefined
        x: {y'    <-- Yep, THIS. No typos. IDK what the hell is going on.

數據格式

data-pos="{'x':10,'y':10}"
data-pos="{'x':'10','y':'10}"
data-pos="{x:'10',y:'10'}"
data-pos="{x:10,y:10}"

源文件:

<html>    
    <head>
        <script>var devmode = true</script>
        <script>var loadExec=false</script>
        <script src="/files/js/jquery.min.js"></script>
    </head>
    <body id="body" class="selectable nooverflow">
        <div class="container hidden desktop">
            <div class="window selectable"  data-pos=!!DATA!!>
                <div class="titlebar">
                    <span class="titletext" onmousedown="movingW=true" onmouseup="movingW=false">Window 1</span>
                </div>
            </div>
            <div class="window" data-pos=!!DATA!!> 
                <div class="titlebar">
                    <span class="titletext" onmousedown="movingW=true" onmouseup="movingW=false">Window 2</span>
                </div>
            </div>
        </div>
        <link rel="stylesheet" type="text/css" href="/files/css/style.css">
        <script src="/files/js/core.js"></script>       <!-- irrelevant -->
        <script src="/files/js/subcore.js"></script>    <!-- irrelevant -->
        <script>        
            $(function () {
                $(window).on("load", function () {
                    $('.window').each(function (index) {
                        if (!loadExec) {
                            var data = $(this).data('pos');
                            //alert(data + "\nDatatype: " + (typeof data));
                            if (data) {
                                alert(data);

                                //PARSING HERE!! <----------

                                $(this).css({ 'top': data.y, 'left': data.x, position: 'absolute' });
                            }

                            loadExec = true;
                            $('.container').removeClass('hidden');
                        }
                    });
                });
            });
        </script>
    </body>
</html>

我一直在搜索,但我能找到的只是不成功或面向 ajax 的。 我只需要將此 JSON 字符串嵌入到一個屬性或某種內部 DOM 方式中。 我只是找不到解決方案。

謝謝你的時間!

在 JSON 中,引號必須是引號,並且所有屬性名稱都必須是字符串(例如,在引號中),因此您列出的數據格式都不正確。 這是正確的:

data-pos='{"x":10,"y":10}'

或者如果將屬性值放在雙引號中很重要,因為屬性的內容是 HTML 文本(人們往往會忘記),您可以使用&quot;

data-pos="{&quot;x&quot;:10,&quot;y&quot;:10}"

...但僅當您絕對必須在屬性值周圍使用"而不是'時才這樣做。

有關 JSON 的詳細信息,包括字符串和屬性名稱必須使用雙引號這一事實,請參閱JSON 網站

例子:

 console.log("a's data:", $("#a").data("pos")); console.log("b's data:", $("#b").data("pos"));
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div id="a" data-pos='{"x":10,"y":10}'></div> <div id="b" data-pos="{&quot;x&quot;:10,&quot;y&quot;:10}"></div>

暫無
暫無

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

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