2012-03-15 15 views
2

iOS上でPhoneGapアプリを完成させたばかりです。今はWP7に移植する時です。アプリケーションが行う必要があることの1つは、JSONファイルを読み込んで解析することです。

$.getJSON("xml-json/myfile.json",function(data){ 
// do cool things 
}); 

しかし、そのコード行が実行されたときに、いくつかのエラーがスローされますが(私はエラーが何であるかを知らないデバッグする方法はありません)、および実行が続行されません。そのコードで何が間違っているのでしょうか? そのコードはiOSバージョンのPhoneGapで完全に機能します。

このエラーはInmediateウィンドウにスローされます。ログ:「ラップXHRはFileAPIからエラーを受け取った:: [オブジェクトのオブジェクト]」

提案に続いて、私は$の代わりに$アヤックスを使用しようとしました。 getJSON。また、コードはブラウザとiOSでは完全に動作しますが、WP7では動作しません。このような単純なものは動作しません:。

機能onDeviceReady(){ のdocument.getElementById( "welcomeMsgを")innerHTMLの+ = "!コルドバの準備ができているバージョン=" + window.device.cordova。 console.log( "onDeviceReady。このメッセージはVisual Studioの出力ウィンドウに表示されます。");

 navigator.notification.alert("readingjson"); 

     $.support.cors = true; 

     $.ajax({ 
      url: "content2.json", 
      dataType: 'json', 
      context: document.body, 
      success: function (a, b, c) { 
       navigator.notification.alert("json readed"); 
      } 
     }); 

     navigator.notification.alert('yeah'); 
    } 

"readingjson" の警告があまりにも、 "うん" 解雇されていますが、1つのNERがトリガーされます "JSONはreaded" ...

ありがとう!

+0

私はこれをCordovaの開発者にバグとして提出しました – xus

答えて

0

あなたが使用しているコルドバのバージョン状態はありません、しかし、v1.4にかなりのバグがあり、XHR要求が失敗したことを意味していました。これは、V1.5で修正されました - このJIRAのバグを参照してください。

https://issues.apache.org/jira/browse/CB-208

あなたは1.5とまだ問題を参照してくださいを使用している場合、これはおそらく新しいバグです!

+0

私は1.5を使用しています: S – xus

+0

私はそれがバグだと言いました。次のバージョンで解決することを願っていますか、それとも既に数ヶ月前に解決されたかもしれません。 – xus

0

ネイティブAjaxコールを試してください。これで問題が解決します。

それは私のためにやった。

〜K

1

あなたは、エラーなどで非常に特異的ではなかったが、あなたのJSON呼び出しの前に、次のプロパティを設定してみてください:

$.support.cors = true; 
+0

が動作しません:(もっと具体的にはどうすればいいですか?PhoneGapはエラーやデバッグ情報を投げず、単にフリーズします... – xus

0

あなたはデバッグ情報を取得できないと言っていますが、PhoneGap Buildを使用していますか?それ以外の場合は、Visual Studioの出力ウィンドウに、アプリケーションからのログが表示されるはずです(「デバッグ」の出力が表示されていることを確認してください)。

Visual StudioでPhoneGapを使用している場合は、JSONファイルがコンテンツアイテムとしてプロジェクトに含まれていることを確認し、CordovaSourceDictionary.xmlファイルがビルド時にそれらのアイテムで更新されるようにしてください。

を参照してください:$ .support.corsとともにhttps://stackoverflow.com/a/8902502/1441046

3

は、あなたもtrueに$ .mobile.allowCrossDomainPagesを設定する必要があります。

コルドバ2.7.0を使用してjQuery Mobile Docs

+1

for Cordova 2.0、tip: 'function onDeviceReady(){$。 support.cors = true; $ .mobile.allowCrossDomainPages = true; ' –

1

イムをチェックして、私は同じ問題を抱えています。

それはバグではないのですが、ここで私のために働いたソリューションです:

    がファイルを区切るためにあなたのjavascriptのコードを移動し、迷惑なのVisual Studio HTMLインスペクタを避けるために、あなたのhtmlに含める
  1. put "$ .support.cors = true;"アヤックスコールの前に私はdeviceready関数に含める。
  2. 「$ .mobile.allowCrossDomainPages = true;」を入力しないでください。以前の答えに示唆されているように。私の場合、この行によってアプリケーションがハングアップしました。

私のコードは次のようになります。

index.htmlを

<script type="text/javascript" src="js/content.js"></script> 
<script type="text/javascript"> 
    document.addEventListener("deviceready", onDeviceReady, false); 

    function onDeviceReady() { 
    $.support.cors = true; 
    getContents(); 
    } 
</script> 

contents.js

function getContents() { 
    $.ajax({ 
url:"http://www.xxx.com/?getSomething", 
    dataType:"json", 
    error:function(xhr, status, errorThrown) { 
    navigator.notification.alert('Failed', function(){}, 'Info', 'OK'); 
    }, 
    success:function(data) { 
    navigator.notification.alert('Success!', function(){}, 'Info', 'OK'); 
    } 
}); 
} 

恩赦私の英語。

関連する問題