I'm working on a Microsoft internal SharePoint site, and I need to pull in List data from a cross domain SharePoint site.
I don't want to use Silverlight, for various reasons, and Business Data Connectivity is not possible right now.
Is there a simple way to use JavaScript or something like it to accomplish this?
"Simple?" Not exactly. Given your requirements, particularly "w/o server side," this isn't possible.
However, if you can forego that requirement, you have a few options for enabling cross-domain requests.
There's decent support for Cross-Origin Resource Sharing for XMLHttpRequest
and Microsoft's XDomainRequest
. Though, this will require that the remote server include the proper headers in the response to allow your origin/domain to make the request.
<% Response.AddHeader("Access-Control-Allow-Origin", "*") %>
A common option is JSONP, which loads the resource in a <script>
with a callback
parameter with the name of a global function. Since JSON is based on JavaScript literals, this won't have the same browser-support issues, but the remote server will have to know how to construct the output and it's limited to GET
requests.
// <script src="http://other.dom/resource?callback=loadResource"></script>
loadResource( [ {"id": 1, "name": "foo"}, {"id": 2, "name": "bar"} ] );
If the remote server you're requesting from can't (or won't) be adjusted to support cross-domain requests, you're pretty much left with making a Server-Side Proxy on your server.
The general pattern is described at AjaxPatters.org and a number of .NET implementations can be found, including John Chapman's and the Cross-Domain Proxy project.