我的設置是這樣的,兩臺服務器都在不同的域。Consuming Dynamics NAV oData使用jQuery跨域的webservice
- 帶有HTML/JavaScript應用程序的SharePoint Foundation 2013,由Microsoft在Office365上託管。
- 帶有Dynamics NAV 2013的Windows Server 2012,由Microsoft在Azure上託管。
我喜歡做的是通過jQuery調用NAV 2013 oData webservice。 我已經檢查過我的webservice是可以從瀏覽器訪問的,而且我確實得到了一個成功的響應。
但是,當我嘗試從我的應用程序在SharePoint中調用它時,我得到一個錯誤說。
SyntaxError: syntax error <?xml version="1.0" encoding="utf-8" standalone="yes"?>
這是我的jQuery代碼:
var call = $.ajax({
url: 'http://url:port/DynamicsNAV70_Instance/odata/MyService',
type: "GET",
crossDomain: true,
username: "username",
password: "password",
dataType: "jsonp",
headers: {
Accept: "application/json;odata=verbose"
}
});
call.done(function (data, textStatus, jqXHR) {
console.log(data.d);
});
call.fail(function (jqXHR, textStatus, errorThrown) {
console.log("Call failed. Error: " + jqXHR.statusText);
});
我發現'jsonp'不符合XML響應很好地工作,但此調用應該返回JSON不應該嗎?
另外,在FireBug中,我實際上可以看到從服務返回的完整XML,它是完全正確的。所以我的應用程序確實得到正確的XML,但看起來像是一個解析錯誤?
我也想通過在我的Dynamics服務器上啓用CORS(http://enable-cors.org/index.html),但不知道我該如何做到這一點?