0

関数からオブジェクトを渡そうとしています。これが私のコードです:

<script type="text/javascript">

// finds the head element; creates a script with passed url; appends it to the head
function loadJSON(url) {
  var headID = document.getElementsByTagName("head")[0];         
  var newScript = document.createElement('script');
      newScript.type = 'text/javascript'; // isn't this 'application/json' really?
      newScript.src = url;
  headID.appendChild(newScript);
}

function parseJSON(o) {
  if (content == null) {
    document.write("<p>parseJSON(): JSON failed.</p>");
    return false;
  }

  isDST = "<strong>not</strong> ";
  if ( o.rawOffset == o.dstOffset ) {
    isDST = "";
  }
  document.getElementById("geonames").innerHTML = "<p>The time now is " + o.time + " in " + o.countryName +".</p>";
}

var lat = "47.01"; var long = "10.2"; // test data for austria
var jsonUrl = " {{URL}} ";
loadJSON(jsonUrl);
</script>

私がやりたいのは、parseJSON 関数内でオブジェクト o を使用する代わりに、オブジェクトを渡したいので、loadJSON() 呼び出しの後にオブジェクトを操作できるようにすることです。解析関数内に innerHTML 呼び出しがあるのは「きれい」ではないことがわかりました。

たとえば、スクリプトの開始時に「var jsonOutput」を宣言してから「jsonOutput = o」を作成するなど、多くの反復を試みましたが、jsonOutputが未定義のままになります。jsonOutput を返そうとすると、どこに返されているのかわかりません。とにかく使用できません。

グローバル変数を作成する必要がありますか? 単純な「global jsonOutput」宣言を試みましたが、関数内で変更されていないようです。

困っています、助けてください。

4

2 に答える 2

0

あなたのシナリオを完全に理解しているかどうかはよくわかりませんが、ブール値または json だけを返すのではなく、オブジェクト全体を返そうとしましたか?

function parseJSON(o)
{
   // Your code here
   var result = new Object();
   result.IsSuccess = true; // or false
   result.JSON = someData; // your json output
   return result;
}

function loadJSON()
{
   // Your code here
   var jsonParseResult = ParseJSON(o);
   if (jsonParseResult.IsSuccess)
   {
       // More code here involving jsonParseResult.JSON
   }
}
于 2009-04-03T12:08:30.760 に答える