2012-02-27 4 views
0

기본적으로 다른 서버의 SharePoint 목록에서 GetListItems를 수행해야합니다. 다른 코드를 시도했지만 모두 오류가 발생했습니다. 누군가가 내가 가지고있는 것을보고 그것이 잘못되었거나 그것이 가능하지 않다면 볼 수 있습니까? 오류 경고가 나타나고 xData.ResponseText 경고가 '정의되지 않음'으로 표시됩니다. 그 후 아무것도. 코드를 실행하는 서버는 server3.intranet.com입니다. 고맙습니다.SharePoint의 GetListItems 도메인

var soapEnv = 
    "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \ 
     <soapenv:Body> \ 
      <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \ 
       <listName>Shared Documents</listName> \ 
       <viewFields> \ 
        <ViewFields> \ 
         <FieldRef Name='Title' /> \ 
        </ViewFields> \ 
       </viewFields> \ 
      </GetListItems> \ 
     </soapenv:Body> \ 
    </soapenv:Envelope>"; 

function Result(xData, status) { 
    alert(xData.responseText); 
    $(xData.responseXML).find("z\\:row").each(function() { 
     var title = $(this).attr("ows_Title"); 
     alert(title); 
    }); 
} 

    $.ajax({ 
    url: "http://teams02.intranet.com/sites/MySite/_vti_bin/Lists.asmx", 
    type: "POST", 
    dataType: "JSONP", 
    crossDomain: true, 
    data: soapEnv, 
    complete: Result, 
     contentType: "text/xml; charset=\"utf-8\"", 
error:function(){ 
    alert("Error"); 
} 

이 코드에서 변경해야 할 사항이 있습니까? 그리고 올바른 URL을 사용하고 있습니까? 나는 이것이 정확히 무엇인지 지적해야만하는지 확신 할 수 없다. 목록 자체 일 수도 있고 가상 경로 일 수도있다. 당신은 크로스 사이트 스크립팅에 직면하는 위험하고

$(function(){ 
    var soapEnv = 
    "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \ 
     <soapenv:Body> \ 
      <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \ 
       <listName>Shared Documents</listName> \ 
       <viewFields> \ 
        <ViewFields> \ 
         <FieldRef Name='Title' /> \ 
        </ViewFields> \ 
       </viewFields> \ 
      </GetListItems> \ 
     </soapenv:Body> \ 
    </soapenv:Envelope>"; 
    $.ajax({ 
     url: "http://servername/mysite/_vti_bin/lists.asmx", 
     type: "POST", 
     dataType: "xml", 
     data: soapEnv, 
     contentType: "text/xml; charset=\"utf-8\"", 
     complete: function(xData, status){ 
      $(xData.responseXML).find("z\\:row").each(function(){ 
       var title = $(this).attr("ows_FileLeafRef").split("#")[1]; 
       alert(title); 
      }) 
     }, 
     error: function(){ 
      alert("error"); 
     } 
    }); 
}); 
+0

OOTB Lists.asmx가 JSONP를 지원하지 않는다고 확신합니다. – spdevsolutions

답변

2

은 작업 예입니다. 귀하의 목표를 성취하기 위해 자바 스크립트가 오는 동일한 서버에서 서비스를 작성하고이 로컬 서비스의 다른 서버 (즉 Linq2SharePoint 또는 SOAP API 사용)에서 데이터를 검색하는 모든 로직을 구현하라는 조언을 얻을 수 있습니다. 이것은 보안 및 크로스 브라우저 구현의 관점에서 가장 신뢰할 수있는 방법입니다.

+0

정말 환영합니다. 답장을 보내 주셔서 감사합니다! 이것은 확실히 도움이되었습니다. 나는 그것을 시도하고 그것은 전송 오류를 던졌다. 나는 당신의 코드 앞에'jQuery.support.cors = true;'를 추가했고 IE에서 작동했다. FF에서는 아무 것도 반환하지 않습니다. 내가 경고 (xData.responseXML)를하면 그것은 비어있는 반면 IE에서는 XML 페이로드를 보여줍니다. 어떤 아이디어? – kramden88

+0

업데이트 : Active Directory와 관련이 있다고 생각됩니다. FF는 그렇지 않지만 IE는 아마도 다른 서버에 내 자격 증명을 전달할 것입니다. FF 사용자를위한 JavaScript에서 수동으로 수행 할 수있는 방법이 있는지 모르겠습니다. – kramden88

+0

jQuery 라이브러리를 다운로드 한 다음 SharePoint 서버에 업로드 한 다음 로컬 복사본을 참조하면 작동합니다. – buck

0

: 여기

관련 문제