2012-06-26 196 views
0

因此,我已經開始使用PhoneGap/Cordova(windows phone)和WCF Rest Services,但是,我在使模擬器與WCF服務交互時遇到問題。PhoneGap與WCF Rest服務

起初我在想,也許模擬器無法連接到本地主機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服務方法,但它會一直進入失敗函數,而不是顯示錯誤消息「未定義」。

有什麼我錯過了嗎?

回答

1

經過進一步調查,已使用該行解決此問題:

jQuery.support.cors = true;

從jQuery庫爲那些有同樣的問題只是一個小的報價,這是上面的行所做的:

CORS等於爲true,如果瀏覽器可以創建一個XMLHttpRequest對象,如果該XMLHttpRequest的對象具有withCredentials屬性。要在不支持cors的環境中啓用跨域請求,但允許跨域XHR請求(windows gadget等),請設置$ .support.cors = true ;. CORS WD