24

特に、URL を含む JavaScript 配列があります。ページに URL を単純に配置しようとすると (配列は Yahoo! Maps API を含むプロジェクトにあります)、本来あるべき URL が表示されます。

しかし、リダイレクトを実行しようとしたり、単にリンク配列要素で「アラート」を実行しようとすると、次のようになります。

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

私が見る限り、これはブラウザがページをレンダリングするときに JSON.encode を実行するためです。したがって、リンクは正常に表示されます。私はそれを正しくリダイレ​​クトするためにいくつかの方法を試しました(それがリンクでやりたいことです)(「eval」の使用を含む)が、うまくいきませんでした。

いくつかの提案に従った後、実行しましeval('(' + jsonObject + ')')たが、それでも同じ出力が返されます。

それで、これはどのように行われますか?

4

7 に答える 7

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

jQueryAPIを参照してください

于 2011-06-30T21:47:04.913 に答える
9

5 つのフィールドを持つ $iniData として PHP に配列があるとします。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() メソッドがあります。これは 3 つの中で最も可能性が低いです。

最も簡単な方法は、typeof(myArray[i]) を確認することです。

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

JavaScriptでのJSONデコードは、文字列を信頼する場合はeval()であり、信頼できない場合はhttp://json.orgで見つけることができるより安全なコードです。

これで、必要なデータをトラバースできるJavaScriptデータ構造が得られます。

于 2008-10-08T12:19:25.743 に答える
1

取得するオブジェクト要素が関数の場合は、次のことを試すことができます。

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

JSON を次のようにデコードします。

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