2017-10-26 7 views
0

は私の機能である:JavaScriptのJSONキャッチされないでSyntaxError:ここでは予期しない数

var myVar = setInterval(myTimer, 500); 
function myTimer() 
{ 
    xhttp=new XMLHttpRequest(); 
    xhttp.onreadystatechange = function() 
    { 
     if (this.readyState == 4 && this.status == 200) 
     { 
      x=this.responseText; 
      window.alert("x,jsondata="+x); 
      var jsondata = JSON.parse(x); 
      document.getElementById("1").innerHTML = jsondata[0].1; 
      document.getElementById("2").innerHTML = jsondata[0].2; 
      document.getElementById("3").innerHTML = jsondata[0].3; 
      document.getElementById("4").innerHTML = jsondata[0].4; 
      document.getElementById("5").innerHTML = jsondata[0].5; 
      document.getElementById("6").innerHTML = jsondata[0].6; 
      document.getElementById("7").innerHTML = jsondata[0].7; 
      document.getElementById("8").innerHTML = jsondata[0].8; 
      document.getElementById("9").innerHTML = jsondata[0].9; 
     } 
    } 
    xhttp.open("GET", "getData.php?q="+<?php echo $fileToAccess;?>, true); 
    xhttp.send(); 
} 

これはgetData.phpです:

<?php 
    $file=$_REQUEST['q']; 
    $myfile=file_get_contents($file); 
    $json=json_decode($myfile); 
    echo $json[1]; 
?> 

と、これは私のJSONファイルがどのように見えるかです:

[{"str": "user2"},{"1": "","2": "","3": "","4": "","5": "","6": "","7": "","8": "","9": ""}] 

タイマーを追加して、ボタンの値をjsonファイルの助けを借りて常に更新しました。しかし、私はラインでエラーを取得しています

document.getElementById( "1")。innerHTML = jsondata [0] .1;

+0

プロパティ名が有効な*変数名*だった場合は、プロパティにアクセスするために**ドット表記**のみ使用できます。変数名として* numbers *を使うことはできません(つまり、 'var 1 = 'foo';は無効です)。したがって**ブラケット記法**を使用する必要があります。 –

答えて

1

あなたは何をしているのですか?しかし、キーは数値であるため、代わりに['1']で取得する必要があります。このように:JavaScriptで

document.getElementById("1").innerHTML = jsondata[0]['1']; 

オブジェクト

obj.prop 

obj['prop'] 

からプロパティを取得するには、2つの方法が一般的に使用すると、プロパティ場合obj.propにのみ動作することを言うことができ、主にあります有効な変数名です(特殊文字、数値などは含みません)。

+0

* "しかし、キーは数字(文字列)です" *これはちょっと混乱します。キーが*数値*であると言うことができます。 –

+1

* "' obj.prop'はキーが数値でない場合にのみ機能します "*これは正しくない。ドット表記法を使用できない他の多くの場合があります。プロパティ名にスペースが含まれている場合プロパティ名が有効な変数名(またはキーワード)の場合にのみ、ドット表記法を使用できます。 –

+1

"* obj.propは、キーが数値でない場合にのみ機能します。JSはそれを認識できないからです。*" - 技術的には、正式な構文では許可されていないからです。 –

関連する問題