24

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

但是,如果我尝试执行重定向或只是对链接数组元素执行“警报”,我会得到:

function(){返回 JSON.encode(this);}

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

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

那么这是怎么做到的呢?

4

7 回答 7

42
var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );

请参阅 jQuery API

于 2011-06-30T21:47:04.913 回答
9

假设您在 PHP 中有一个包含 5 个字段的 $iniData 数组。如果使用 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>
于 2011-03-15T07:38:07.797 回答
5

如果您在警报中收到此文本:

function(){return JSON.encode(this);}

当您尝试 alert(myArray[i]) 时,有几种可能性:

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

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

于 2008-10-08T15:20:22.600 回答
2
eval('(' + jsonObject + ')')
于 2008-10-08T15:23:51.830 回答
1

如果你得到的对象元素是一个函数,你可以试试这个:

var url = myArray[i]();
于 2008-10-09T23:41:30.093 回答
1

如果您信任该字符串,JavaScript 中的 JSON 解码只是一个 eval(),如果您不信任,您可以在http://json.org上找到更安全的代码。

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

于 2008-10-08T12:19:25.743 回答
-1

我以这种方式解码 JSON:

eval( 'var from_json_object = ' + my_json_str + ';' );
于 2013-03-25T11:33:31.250 回答