2016-07-24 50 views
0

如何使Sharepoint对象模型能够从外部网络服务获取请求?我试图用ajax请求:Sharepoint如何获取外部网络服务的请求

$.get("http:/servername/webservice_name", function(data, status) { 
alert("Data: " + data[0] + "\nStatus: " + status); 

});

但是我有一个错误:访问被拒绝。 我的web服务以JSON格式进行响应。 我已阅读了很多文章,但没有任何决定。我读到,ajax禁止在SharePoint中使用外部Web服务。我怎样才能让它没有Ajax?

+0

Sharepoint版本?该服务是否使用相同的域名? –

+0

Sharepoint 2013在线。不,网络服务有其他域 – Dim

+0

访问被拒绝。意味着用户在外部网站没有权限 – bresleveloper

回答

0

在SharePoint联机中,它仅适用于https Web服务。来自https网站的http不允许使用。 最终代码,与https协同工作:

$(document).ready(function(){ 
$.ajax({ 
    url: "https://services.odata.org/Northwind/Northwind.svc/Customers", 
    type: "GET", 
    headers: { "ACCEPT": "application/json;odata=verbose" }, 
    async: false, 
    success: function (data) { 
     if(data.d.results.length>0){ 
      alert("Results Count:"+data.d.results.length); 
     }else{ 
      alert("no data"); 
     } 
    }, 
    error: function() { 
     //alert("Failed to get details");     
    } 
}); 

});

0

如果您认为使用AJAX或特定库阻止您访问Web服务,则可以尝试直接使用本机JavaScript XMLHttpRequest调用Web服务。

例如:

var verb = "GET"; 
var url = "http://servername/webservice_name"; 
var xhr = new XMLHttpRequest(); 
xhr.open(verb, url, true); 
xhr.setRequestHeader("Content-Type","application/json"); 
xhr.onreadystatechange = function(){ 
    if(xhr.readyState == 4){ 
     myCallbackFunction(xhr.status, xhr.responseText); 
    } 
}; 
xhr.send(data); 

function myCallbackFunction(status, text){ 
    // do something with the results based on the status 
} 

你也应该确认您的Internet Explorer设置是一样的SharePoint,因为它们是在HTML页面,在这里你能得到Web服务的工作。具体来说,您需要检查浏览器模式和安全设置。

在尝试排除网络或代码故障时,确认设置完全相同时问题仍然存在。