2

私はこれを3日間続けており、ほとんどすべての代替コードを試し、無駄に修正しました。

これは、bog-standardjQueryの例から抜粋したコードです。

    $.ajax({
            url: "http://api.wunderground.com/api/4213a68e7f20c998/geolookup/conditions/forecast/q/Australia/Noarlunga.json",
            dataType: "jsonp",
            success: function(parsed_json) {
               alert("YEP!");
               var loc = parsed_json['response'];
               var weather = "Location: " + parsed_json.location.city + "<br />";
               weather += "Wind: " + parsed_json.current_observation.wind_dir + " ";
               weather += parsed_json.current_observation.wind_mph + "-" + parsed_json.current_observation.wind_gust_mph + " knts";
               $("#info").html(weather);
           }    
    });

そしてここに多くの人々が提案したいくつかの設定があります(それは何もしませんでした)

    $( document ).bind( "mobileinit", function() {
        // Make your jQuery Mobile framework configuration changes here!
        $.mobile.allowCrossDomainPages = true;
        $.mobile.ajaxEnabled = true;
        $.mobile.pushStateEnabled = false;
        $.mobile.allowCrossDomainPages = true;  
    });

さらに、私は持っています:

  • AndroidManifest.xmlファイルに<uses-permissionandroid:name ="android.permission.INTERNET"/>を追加しました

  • 同じターゲットのブラウザでjsonリクエストURLをテストしました(正常に動作します)

  • FireFox / Chromeでページをテストしました(正常に動作します)
  • Galaxy s2 over 3Gでアプリを試しました(UIはすべて正常に機能しますが、ajaxリクエストはまだ失敗します)

これは完全なコードではないことに注意してください。ただし、標準の.ready()関数でラップされた標準のphonegapdevicereadyリスナーイベント関数に含まれているだけです。

これが私の電話で失敗し、SDKが接続/許可の問題ではなく、phonegap/Eclipseの問題を示しているように見えるという事実。

Android SDKを使用して、Android2.3AVDにデプロイしようとしています。Android4AVDへのデプロイはまだ試していません。

試してみる提案が足りなくなったので、問題が何であるかを誰かが知っていれば、私はそれが大好きです!

4

3 に答える 3

3

前提条件がサーバー上のphpコードを変更できることである場合。

これを試して、ローカルブラウザまたはJSONPなしのモバイルでテストできるようにしてください

1.jQueryMobile Webサイトの指示に従います。これは、phonegap(http://jquerymobile.com/test/docs/pages/phonegap.html)で機能させる方法を詳しく説明しています。

お住まいの<script></script>地域で、

$(document).on("mobileinit", function(){
  //apply overrides here
  $.mobile.allowCrossDomainPages = true;
  $.support.cors = true;

});

あなたのajaxは

$.ajax({
           type: "GET",
           url: "http://xx.xx.xx.xx/xxx/xx.php"
        }).done(function( msg ) {
           alert(msg);
           //refresh the content
           $( '.ui-content' ).load( 'xx/xx.html', function ()  {$(this).trigger('create') });
        });

2.あなたのphpは次のようなものです:

 <?php
    header('Access-Control-Allow-Origin: *');//for local browser test
    $test='[{"name":"aa","address":"aa"}, {"name":"bb","address":"bb"}]';
    echo $test;
 ?>
于 2012-12-07T15:13:57.370 に答える
0

$( document ).bind( "mobileinit", function()

追加

$.support.cors = true. 

:)

于 2012-08-09T02:54:36.093 に答える
0

私はたくさんの組み合わせを試しましたが、最終的にうまくいったのは、index.htmlに次のものを追加することでした。重要なのは、jquerymobileをロードする前にロードされていることを確認することです(それを使用している場合)。その後どこかにロードすると動作しません。

<script type="text/javascript">
$(document).bind("mobileinit", function() {
    $.support.cors = true;
    $.mobile.allowCrossDomainPages = true;
});
</script>
于 2014-01-11T00:40:56.477 に答える