1

2つのプロジェクトを別々に実行しています。1つはIISでホストされている単純な静的HTML5Webサイトで、Iamはポート番号90でモバイルアプリケーションを評価しています。

次に、データを返すポート9000JSONのサービス用に実行されているWebサーバーがあります(これにはplayframework2.0を使用します)。

私の静的なWebサイトには、サービスURLへの以下の呼び出しがあるHTML5ページがあります。ajax

$("#homePg").on('pageinit', function(event) {
 $.ajax({
        type:'GET',
        url : 'http://localhost:9000/menu',
        success : function(response){
                alert('success'+response);
        },
        error : function(xhr, status, error){
        alert('error'+xhr.responseText);
        }
      }); 
   });

エラー関数に移動するたびに、ブラウザで同じURLを試した場合と同様に、正常に機能します。

使用していJquery 1.7.1jquery.mobile.1.1.1.js

Firebugをチェックインしましたが、URLは正しく読み込まれますが、応答が空白です

4

1 に答える 1

1

javascriptでは、別のポートがクロスドメイン呼び出しとして扱われます。jsonpを使用する必要があります。

これを行うには、 jquery.jsonpライブラリを使用します。

$.jsonp({
    dataType: 'json',
    url: 'http://localhost:9000/menu',
    success: function (response) {

    },
    error: function (xhr, status, error) {

    }
}); //end ajax

jsonpはGETリクエストしか実行できないため、データを渡す必要がある場合は、クエリ文字列の一部である必要があります。クレジットカードデータなど、法的な影響があるデータを送信する場合は、カード番号がIISログに保存されないように、システムログをオフにする必要があります。

を使用してjsonp呼び出しを行うこともできます$.ajax

$.ajax({
    url: 'http://localhost:9000/menu',
    dataType: "jsonp",
    jsonp : "callback",
    jsonpCallback: "jsonpcallback"
});

function jsonpcallback(data) { 
    alert('success' + data);
}

私は2番目の方法を使用したことがないので、このコードが機能するかどうかさえわかりません。

于 2012-08-20T13:30:17.300 に答える