2011-12-16 4 views
0

IEを使用して次のコードをローカルで呼び出すと動作しますが、FirefoxまたはChromeを使用しているときは "ParseError"が表示されます。 コードIEで正常に動作し、検索条件に一致する私のSharepointのディレクトリ内のすべての人々を取得しますが、私はFirefoxsからそれを呼び出したときに、それが失敗した....FirefoxでのAjaxクエリでのParseError

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 

    <script type="text/javascript"> 

     function Search() { 

    var userSearchQueryString = 
      "SELECT Size, Rank, Path, Title, UserProfile_GUID, PreferredName, AccountName, UserName FROM scope() WHERE FREETEXT(DefaultProperties, '" + $("#search").val() + "') AND ((\"SCOPE\" = 'People'))" 

     var soapEnv = 
      "<?xml version=\"1.0\" encoding=\"utf-8\"?> \ 
      <soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"> \ 
       <soap:Body> \ 
       <Query xmlns=\"urn:Microsoft.Search\"> \ 
        <queryXml>&lt;QueryPacket xmlns='urn:Microsoft.Search.Query'&gt;&lt;Query&gt;&lt;SupportedFormats&gt;&lt;Format revision='1'&gt;urn:Microsoft.Search.Response.Document:Document&lt;/Format&gt;&lt;/SupportedFormats&gt;&lt;Context&gt;&lt;QueryText language='en-US' type='MSSQLFT'&gt;" + userSearchQueryString + "&lt;/QueryText&gt;&lt;/Context&gt;&lt;/Query&gt;&lt;/QueryPacket&gt;</queryXml> \ 
       </Query> \ 
       </soap:Body> \ 
      </soap:Envelope>" 


     $.ajax({ 
      url: "http://sharepoint.myserver.com/_vti_bin/search.asmx", 
      beforeSend: function(xhr) { 
       xhr.setRequestHeader("SOAPAction", 
       "urn:Microsoft.Search/Query"); 
      }, 
      type: "POST", 
      dataType: "xml", 
      data: soapEnv, 
      complete: processResult, 
      contentType: "text/xml; charset=utf-8" 
     }); 

     } 
     function processResult(xData, status) {    
      var title; 
      var username; 
      var guid; 
      var user; 
      $('Property Name', xData.responseXML.text).each(function() { 
       var $this = $(this); 
        if ($this.text() === "TITLE") { 
        user = ''; 
        title = $this.nextAll("Value").text();       
        user = title; 
        } 
        if ($this.text() === "USERPROFILE_GUID") { 
        guid = $this.nextAll("Value").text(); 
        user = user + ' - ' + guid; 
        } 
        if ($this.text() === "USERNAME") { 
        username = $this.nextAll("Value").text(); 
        user = user + ' - ' + username; 
        alert(user); 
        }     
      }); 
      //var xml = responseXMLxml.replace(/&lt;/g, "<").replace(/&gt;/g, ">"); 
     } 

     $(document).ready(function() { 
      $("a#submit").click(function() { 
      Search(); 
    }); 
}); 
    </script> 
+0

ajax呼び出しが返すXMLは何ですか? –

+0

私の頭の上から外して、私はこれを推測するでしょう: 'xhr.setRequestHeader(" SOAPAction "、" urn:Microsoft.Search /Query ");'。しかし、私は確信していません。 –

+0

これはあなたがすでに知っていることかもしれませんが、FireBug(http://getfirebug.com/)を使用しているときに何がうまくいかないのかについての詳細情報が表示されます。 「ネット」タブと「XHR」の下に、AJAXのポストとレスポンスが表示されます。これは、MДΓБДLLが求めていたものです。 – JNadal

答えて

0

はこの答えをチェックアウト:JQuery - $.ajax ContentType Problem in Firefox

ユーザーKarmic Coderは、問題の原因と考えられるシナリオを説明しています。

+0

クロスドメイン部分はあなたがそれを置くと、 "http://sharepoint.myserver.com/_vti_bin/search.asmx"へのajaxリクエスト。リクエストを開始するホストされたコードがsharepoint.myserver.comとは異なるURL(「localhost」にある場合を含む)であれば、クロスサイトになります。 – JNadal

+0

正確には私が探していたものではありませんでしたが、今は認証の問題があることを知っています...ありがとうございます... –

0

多分役立ちます。私も同じ問題がありました。

あなたが使用する必要があるクロスブラウザ-compatilityについては

あなたが使用する必要のあるURLの場合
$(xData.responseXML).text() 

url: "/_vti_bin/search.asmx", 

クロスドメインAjax呼び出しができないため。

関連する問題