Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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中对数组元素进行JSON解码?_Javascript_Json - Fatal编程技术网

如何在JavaScript中对数组元素进行JSON解码?

如何在JavaScript中对数组元素进行JSON解码?,javascript,json,Javascript,Json,我有一个JavaScript数组,其中包括一个URL。如果我试着简单地将URL放在页面中(该数组位于一个涉及Yahoo!Maps API的项目中),它会按原样显示URL 但如果我尝试重定向或只是对link数组元素发出“警报”,我会得到: 函数(){return JSON.encode(this);} 在我看来,这是因为浏览器在呈现页面时执行JSON.encode,因此链接显示正常。我尝试了几种方法使其正确重定向(这就是我想对链接执行的操作)(包括使用'eval'),但没有成功 在遵循一些建议之后

我有一个JavaScript数组,其中包括一个URL。如果我试着简单地将URL放在页面中(该数组位于一个涉及Yahoo!Maps API的项目中),它会按原样显示URL

但如果我尝试重定向或只是对link数组元素发出“警报”,我会得到:

函数(){return JSON.encode(this);}

在我看来,这是因为浏览器在呈现页面时执行JSON.encode,因此链接显示正常。我尝试了几种方法使其正确重定向(这就是我想对链接执行的操作)(包括使用'eval'),但没有成功

在遵循一些建议之后,我运行了
eval(“(“+jsonObject+”)”)
,但它仍然返回相同的输出


这是怎么做到的

如果您信任字符串,JavaScript中的JSON解码只是一个eval(),如果您不信任字符串,则可以找到更安全的代码


然后,您将拥有一个JavaScript数据结构,可以遍历该结构以获取所需的数据。

如果您在警报中获得此文本:

function(){return JSON.encode(this);}
当您尝试alert(myArray[i])时,有几种可能性:

  • myArray[i]是一个函数(很可能)
  • myArray[i]是文本字符串“function(){return JSON.encode(this);}”
  • myArray[i]有一个.toString()方法,该方法返回该函数或该字符串。这是三者中可能性最小的

最简单的方法是检查typeof(myArray[i])。

如果得到的对象元素是函数,可以尝试以下方法:

var url = myArray[i]();

假设PHP中有一个数组$iniData,包含5个字段。如果使用ajax-

echo json_encode($iniData);
在Javascript中,使用以下命令:

<script type="text/javascript">
    $(document).ready(function(){
        $.ajax({
            type: "GET",
            url: "ajaxCalls.php",
            data: "dataType=ini",
            success: function(msg)
            {
                var x = eval('(' + msg + ')');
                $('#allowed').html(x.allowed);              // these are the fields which you can now easily access..
                $('#completed').html(x.completed);
                $('#running').html(x.running);
                $('#expired').html(x.expired);
                $('#balance').html(x.balance);
            }
        });
    });
</script>

$(文档).ready(函数(){
$.ajax({
键入:“获取”,
url:“ajaxCalls.php”,
数据:“数据类型=ini”,
成功:功能(msg)
{
var x=评估(“(“+msg+”)”);
$('#allowed').html(x.allowed);//这些是您现在可以轻松访问的字段。。
$('#completed').html(x.completed);
$('#running').html(x.running);
$('#expired').html(x.expired);
$('#balance').html(x.balance);
}
});
});

.

我用这种方式解码JSON:

eval( 'var from_json_object = ' + my_json_str + ';' );

不清楚你是什么意思。。。你能发布更多的示例代码吗?实际的数组内容和重定向调用将非常有用。正如我刚才所说,我试图“eval”link元素,但它返回“undefined”。数组中的数据来自解析XML,你认为这与此有关吗?我怀疑这是一个文本字符串。很可能是一个函数。我尝试过“eval('('+jsonObject+')”),但它仍然返回与以前相同的输出…是的,可以想象将函数传递给eval()将调用该函数的toString方法,返回一个字符串,该字符串将eval返回到该函数本身。因此,这是有意义的。如果您100%信任您的源代码,那么eval是唯一一种解码JSON数据的安全方法:数据不能被评估->{“code”:200,“lang”:“en de”,“text”:[“string 1”,“string 2”]}
var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );
eval( 'var from_json_object = ' + my_json_str + ';' );