簡體   English   中英

firefox抱怨有效的json…看不見的無效字符?

[英]firefox complaining about valid json… invisible invalid character?

我正在編寫一個PHP腳本,該腳本需要將2D數組作為json加載到js變量中。 首先,我制作數組,然后使用json_encode將其轉換為字符串。 然后,我運行一小段js以使其可在客戶端訪問。 像這樣:

$sBaseData = Filters::$sFilterBaseTypeData;
$sBaseData = str_replace('\r',' ',$sBaseData);
$sBaseData = str_replace('\n',' ',$sBaseData);
$sBaseData = str_replace('\t',' ',$sBaseData);

echo <<<HTML
    <script type="text/javascript">
        var validation_data = JSON.parse('$sBaseData');
    </script>
HTML;

Firefox在這里抱怨一個意外的字符:

var validation_data = JSON.parse('{"enumeration":{"js":"","msg":""},"date":{"js":" var parts = widget.value.split('-'); var d = new Date(parts[0],parts[1],parts[2]); PASS = (d.getDay()>=1); ","msg":"Invalid date. Please Enter a date in the format: YYYY-MM-DD"},"text":{"js":"","msg":"what did you do?"},"integer":{"js":"if (isNaN(widget.value)) { PASS = false; } else { intVal = parseInt(widget.value); PASS = (widget.value == intVal); } ","msg":"Please enter an integer value"},"decimal":{"js":"PASS = isNaN(widget.value); ","msg":"Please enter a number"},"group":{"js":"","msg":""},"dealer":{"js":"","msg":""}}')

我嘗試使用http://jsonlint.com/來找出哪個字符有問題,但是它說的確很有效。 我替換了引起問題的某些字符,還有什么我需要替換的?

嗯...

 var parts = widget.value.split('-'); 

將其放在使用單引號的字符串中會破壞它。 使用JSON編碼器輸出JavaScript文字

問題是你有'在您的字符串,而你正在使用'引用的字符串。

如果您的json字符串有效,則甚至不需要解析它。 以下將工作。

echo <<<HTML
    <script type="text/javascript">
        var validation_data = {$sBaseData};
    </script>
HTML;

您的JSON有效,但在js代碼中,簡單的引號關閉了解析函數的參數。

嘗試這樣:

"date":{"js":" var parts = widget.value.split(\'-\');

暫無
暫無

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

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