Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法访问Javascript脚本标记内EJS中声明的json数组项 var arrayContent=“” var指数=0; 函数myfunc(){ console.log(arrayContent);/*[对象对象],[对象对象],[对象 对象],[对象对象]*/ var arrContentJson=JSON.parse(arrayContent); console.log(arrContentJson[index]);/*未捕获的语法错误:意外 位置1处JSON中的标记o*/ }_Javascript_Json_Node.js_Express_Ejs - Fatal编程技术网

无法访问Javascript脚本标记内EJS中声明的json数组项 var arrayContent=“” var指数=0; 函数myfunc(){ console.log(arrayContent);/*[对象对象],[对象对象],[对象 对象],[对象对象]*/ var arrContentJson=JSON.parse(arrayContent); console.log(arrContentJson[index]);/*未捕获的语法错误:意外 位置1处JSON中的标记o*/ }

无法访问Javascript脚本标记内EJS中声明的json数组项 var arrayContent=“” var指数=0; 函数myfunc(){ console.log(arrayContent);/*[对象对象],[对象对象],[对象 对象],[对象对象]*/ var arrContentJson=JSON.parse(arrayContent); console.log(arrContentJson[index]);/*未捕获的语法错误:意外 位置1处JSON中的标记o*/ },javascript,json,node.js,express,ejs,Javascript,Json,Node.js,Express,Ejs,为什么我不能访问已解析Json数组(arrContentJson)的内容。如何访问它?可能删除'周围的单引号会起作用,但似乎您正在解析已经有效的json控制台.log(arrayContent[0]) 看起来您希望将数组从ejs传递到标记内的javascript代码,为此,您应该使用未转义插值: var arrayContent=; var指数=0; 函数myfunc(){ console.log(arrayContent); var arrContentJson=JSON.parse(arr

为什么我不能访问已解析Json数组(arrContentJson)的内容。如何访问它?

可能删除
'
周围的单引号会起作用,但似乎您正在解析已经有效的json<代码>控制台.log(arrayContent[0])

看起来您希望将数组从ejs传递到
标记内的javascript代码,为此,您应该使用未转义插值


var arrayContent=;
var指数=0;
函数myfunc(){
console.log(arrayContent);
var arrContentJson=JSON.parse(arrayContent);
log(arrContentJson[index]);
}
myfunc();

myJsonArray
可能是一个数组,而不是表示数组的JSON。(这里也有
标记,而不是
)但是,将任意JSON直接放在
标记中是不安全的;您需要使用专门为此目的而设计的转义。(如果您实现了这一点,您应该通过确保
最好在var arrayContent=''上放置一个调试点并观察变量内容来测试它是否工作。我认为您提供的
控制台.log
日志不正确。最初
arrayContent
是一个字符串。它看起来如何?您得到的错误应该发生在使用
JSON.parse()
的e行看起来没有必要调用
JSON.parse()
。如果您通过EJS模板传递JSON,它应该作为对象文本而不是字符串加载到该脚本中。只需删除
周围的引号,让我困惑的是为什么在
中包含JavaScript。不,它不起作用。它给我一个错误未捕获引用错误:myfunc()未定义。它没有给出任何特定的内容。这就是为什么我尝试以字符串形式访问myJsonArray,以便可以对其进行处理,然后将其解析回JSON以访问内容。请查看我已注释的控制台日志。感谢[object],[object],…意味着两件事之一:它已经被正确解析为json,这意味着您不需要对它进行json.parse()解析,或者这是myJsonArray变量的文本字符串内容。我怀疑'myFunc()'是未定义的,因为json后面缺少分号,没有单引号,但这就引出了一个问题:为什么要在div中的script元素之外声明json。这在dev工具中很容易调试,console.log中的输出是字符串还是对象?我知道它被解析为json,但我已将其转换为字符串,因此在,我可以在控制台中注销它。之后,我将它解析回Json,以便访问内容,但我得到了未捕获的语法错误:Json中的意外标记o位于位置1。我的实际Json内容是:[“col1”:[“data1”,“data2'],“col2':[“data1”,“data2'”,“col3':[“data1”,“data2'”,“col4':[“data1”,“data2'”]您可以将对象记录到控制台,它们不必是字符串。“JSON中位置1处的意外标记o”表示它正试图将字符串“[object object…”解析为JSON,这意味着
是包含文本“[object object object…”的字符串。请删除引号,添加分号,不要使用JSON.parse()您将能够访问arrayContent[0]在这一点上。不,它不起作用。它没有给出任何具体的错误。只是说:myfunc没有定义。
myJsonArray
是json字符串还是javascript对象?它是json数组。试着使用
var arrayContent=;
来代替它。好吧,这是可行的,我可以从arrayContent中提取元素。但是我有疑问。我想知道什么我们知道,要访问JSON数组的元素,它应该是一个纯JSON数组,而不是它的字符串化版本,对吗?但在我的例子中,当我尝试将arrayContent(JSON数组的字符串化版本)解析回JSON并访问数组的元素(如arrayContent[0].col[0])时,我得到了一个错误“位置1处JSON中的意外标记o”但当我从字符串化版本(即直接从arrayContent)访问元素而不将其解析为JSON时,它会工作!如何工作?
<div>  
    var arrayContent='<%= myJsonArray %>'
 <!--myJsonArray is sent to this ejs file using the render function in
 index.js while rendering this ejs file -->
</div>
<script>
  var index=0;
  function myfunc(){
  console.log(arrayContent); /*[object Object],[object Object],[object 
                                Object],[object Object] */

  var arrContentJson= JSON.parse(arrayContent);
  console.log(arrContentJson[index]); /* Uncaught SyntaxError: Unexpected 
                                         token o in JSON at position 1 */
   }
     </script>
<script>

    var arrayContent= <%- JSON.stringify(myJsonArray) %>;

    var index=0;

    function myfunc(){
        console.log(arrayContent);

        var arrContentJson= JSON.parse(arrayContent);
        console.log(arrContentJson[index]);
    }

    myfunc();

</script>