2012-02-27 9 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

は実施例です。あなたの目標を達成するために、私はあなたのjavascriptが由来する同じサーバ上でサービスを作成し、このローカルサービス内の他のサーバ(すなわちLinq2SharePointまたはSOAP APIを使用して)から他のサーバからデータを取り出すためのすべてのロジックを実装するようアドバイスします。これは、セキュリティとクロスブラウザの実装の観点から、最も信頼できる方法です。

+0

ようこそ、ありがとうございました!これは確かに助けになりました。私はそれを試して、No Transportエラーを投げた。あなたのコードの前に 'jQuery.support.cors = true;'を追加しました。これは(IEで)うまくいきました。 FFでは、何も返されません。アラート(xData.responseXML)を実行すると、IEではXMLペイロードが表示されますが、これは空です。何か案は?? – kramden88

+0

アップデート:Active Directoryと関係があると思われます。 FFはそうではありませんが、IEはおそらく他のサーバーに自分の資格情報を渡しています。 JavaScript for FFユーザーで手動で行う方法があるかどうかはわかりません。 – kramden88

+0

jQueryライブラリをダウンロードしてSharePointサーバーにアップロードし、ローカルコピーを参照すると動作します。 – buck

0

:ここ

関連する問題