0

PhoneGap は、以下の twitter から json を出力します。ただし、ajax.open に他の URL を使用すると、空白の画面が表示されます。乱雑なコード レイアウトについてのお詫び

 <pre>
</head>
<body>
 <script type="text/javascript" src="phonegap.js"></script>
<script type="text/javascript">
         function appReady(){

         }
         document.addEventListener("deviceready", appReady, false);
         var ajax = new XMLHttpRequest();   
         ajax.open("GET","http://search.twitter.com/search.json?q=bacon",true);

         ajax.send();

         ajax.onreadystatechange=function(){
         if(ajax.readyState==4 && (ajax.status==200))
         {
           document.getElementById('main').innerHTML = ajax.responseText;
         }
       }
       </script>
      Hello
 <div id="main">
 </pre>

eclipse を使用して Web サーバーを作成し、ローカルホストからこれらのリクエストのコーディングを開始し、以下のコードを使用して、script タグの phonegap.js を差し引いたところ、/Test2.html から html を呼び出すのに問題なく動作しました"."phonegap.js を削除しました" 私のローカル マシンでは phonegap を使用していないため、"Test.js" に置き換えました。このコードには、XMLHttpRequest に関する W3school のドキュメントから取得した次のコードが含まれています。

エミュレーターで /Test2.html を呼び出そうとすると、空白の画面が表示されます。また、自分のサーバーから twitter json を呼び出すことができません。これは、phonegap を使用していないため、クロス ドメイン保護がオンになっているためだと予想されます。

エミュレータでこのコードを使用して Test2 やその他の URL を表示できない理由を教えてください。また、利用可能な他のオンラインjsonを知っている人はいますか?私はgoogleとyahooのものを試しましたが、どちらでも動作しないようです.

function handler() {
 if(this.readyState == this.DONE) {
if(this.status == 200 && this.responseXML != null && this.responseXML.getElementById('test').textContent) 
{
  // success!
  processData(this.responseXML.getElementById('test').textContent);
  return;
}
// something went wrong
processData(null);
}
}
4

1 に答える 1

2

他のJSONストリームにアクセスするには、「APIキー」が必要になる場合があります。Twitterはそのようなキーを必要としません。

于 2012-04-13T14:33:14.537 に答える