0

そのため、PhoneGap / Cordova(Windows Phone)とWCF Rest Servicesを使用し始めましたが、エミュレーターをWCFサービスと対話させるのに問題があります。

最初は、エミュレータがローカルホストのWCFサービスに接続できないのではないかと考えていたので、外部ホストでWCFサービスを公開しましたが、それでも問題は発生しました...つまり、WCFサービスを呼び出すことができません。

私が持っているコードを以下に示します。

PhoneGapアプリケーションのjavascriptファイルは次のとおりです。

function getAjax() {
var jqxhr = $.ajax({
    url: 'http://link.to.service.com/service1/',
    //headers:
    beforeSend: function (xhr) {
        //xhr.overrideMimeType('text/plain; charset=x-user-defined');
    },
    dataType: 'json'
})
.done(function (data) {
    var element = document.getElementById('ajaxCall');
    element.innerHTML = JSON.stringify(data, null, "\t");
})
 .fail(function (xhr, status, error) {
     showError(error);
 })
 .always(function () { showAlert("complete"); });

}

次に、WCFサービスには次のメソッドが含まれます。

 [WebGet(UriTemplate = "")]
    public List<SampleItem> GetCollection()
    {
        return new List<SampleItem>()
                   {
                       new SampleItem()
                       {
                           Id = 1,
                           StringValue = "Hello" }
                   };
    }

したがって、javascriptメソッド「getAjax」の呼び出しが行われると、WCFサービスメソッドを呼び出す必要がありますが、エラーメッセージ「undefined」を表示する代わりに、失敗関数に入り続けます。

ここで見逃しているものはありますか?

4

1 に答える 1

1

さらに調査した後、これは次の行を使用して解決されました。

jQuery.support.cors = true;

同じ問題を抱えている人のためのjQueryライブラリからのほんの少しの引用、これは上記の行が行うことです:

ブラウザがXMLHttpRequestオブジェクトを作成でき、そのXMLHttpRequestオブジェクトにwithCredentialsプロパティがある場合、corsはtrueに等しくなります。corsをまだサポートしていないが、クロスドメインXHRリクエスト(Windowsガジェットなど)を許可している環境でクロスドメインリクエストを有効にするには、$。support.cors=true;を設定します。CORS WD

于 2012-06-27T07:34:19.587 に答える