2

私はこの問題を解決しようと高低を検索しましたが、役に立ちませんでした。自分のマシンでローカルにホストされているサーバーに Phonegap アプリを接続しようとしていますが、常にタイムアウトします。このコードを使用して簡単なアプリを作成し、最終的に Sam Croft のコードを完全にコピーしました。それでもタイムアウトします。samcroft で PHP スクリプトに接続すると、アプリが動作し、アプリにデータを取得できますが、彼の URL を私の URL に置き換えると、タイムアウトになります。私の PHP スクリプトはブラウザで完全に動作しますが、Android 仮想デバイスでは動作しません。ホワイトリストに追加http://127.0.0.1*するかどうかは関係ありません。妙に(?)追加しなくてもhttp://samcroft.co.uk*samcroft.co.uk でスクリプトを実行すると、アプリは適切に実行され、データが取得されます。私は Eclipse で開発し、Cordova 2.6.0 を使用しています。およびjquery 1.9.1。これらのファイルの古いバージョンを試してみましたが、結果は同じでした。

以下の js コードの URL では完全に機能しますが、URL を次のように置き換えると'http://127.0.0.1/landmarks.php'、タイムアウト エラーが発生します。ポート番号を URL に追加しようとしましたが、同じエラーが発生します。私も'http://localhost/landmarks.php'同じエラーで使用しようとしました。(2つのlandmark.phpファイルは同じですが、私のものはローカルのMySQLサーバーに接続しています)。

js コード:

    $.ajax({
    url: 'http://samcroft.co.uk/demos/updated-load-data-into-phonegap/landmarks.php',
    dataType: 'jsonp',
    jsonp: 'jsoncallback',
    timeout: 5000,
    success: function(data, status){
    $.each(data, function(i,item){
    var landmark = '<h1>'+item.name+'</h1>'
    + '<p>'+item.latitude+'<br>'
    + item.longitude+'</p>';

    output.append(landmark);
    });
    },
    error: function(xhr, ajaxOptions, thrownError){
    alert(ajaxOptions);
    }
4

3 に答える 3

2

エミュレーターでテストしているようです。この場合、そのアドレスはローカル マシン (この場合は実際のエミュレーター) を参照しているため、機能localhost127.0.0.1ません。代わりに10.0.2.2、スクリプトをホストする開発マシン/サーバーへの「ブリッジ」のように機能する を使用する必要があります。詳細については、こちらを参照してください。これにより、外部の samecroft サイトが機能する理由が説明されます。

于 2013-05-20T15:52:27.103 に答える
0

Android デバイスから localhost にアクセスすることはできません。

次のものが整っていることを確認してください

  • 同じLANに接続されたマシンと電話(wifi経由)
  • マシンの IP を取得し、代わりにそれを使用します。 localhost
  • それでも localhost にアクセスできない場合は、マシンで実行されているファイアウォールまたはウイルス対策プログラムを無効にしてから、もう一度試してください。

これが、携帯電話からローカルホストにアクセスする方法です。

電話とエミュレータの両方が外部ドメインにあるため、外部 URL にアクセスできます。ただし、ローカルホストにアクセスするには、同じ LAN または他のバリアント (VPN など) にいる必要があります。

于 2013-05-20T10:28:03.553 に答える