【问题标题】:ParseError in Ajax Query in Firefox [duplicate]Firefox 中 Ajax Jquery 中的 ParserError [重复]
【发布时间】:2012-10-11 09:01:34
【问题描述】:

当我使用 IE 在本地调用以下代码时,它可以工作,但是当使用 Firefox 或 Chrome 时,我得到一个“ParseError”。 该代码在 IE 中运行良好,并检索了我的 Sharepoint 目录中与搜索条件匹配的所有人员,但是当我从 Firefox 调用它时它失败了......

    <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> 

【问题讨论】:

  • ajax 调用返回什么 XML?
  • 在我的脑海中,我猜这个:xhr.setRequestHeader("SOAPAction", "urn:Microsoft.Search/Query");。但我不确定。
  • 这可能是您已经知道的事情,但是您可以在使用 FireBug (getfirebug.com) 时看到更多关于出现问题的信息。在“Net”选项卡和“XHR”下,您可以看到 AJAX 帖子和响应,我相信这是 MДΓΓ БДLL 所要求的。
  • 查看网络信息,我可以看到我收到“401 Unauthorized”错误....但这只会发生在 Chrome 和 FF 中,而不是 IE .....跨度>

标签: jquery ajax internet-explorer sharepoint firefox


【解决方案1】:

也许有帮助。我遇到了同样的问题。

为了实现跨浏览器兼容性,您需要使用:

$(xData.responseXML).text()

对于您应该使用的网址:

url: "/_vti_bin/search.asmx",

因为无法进行跨域 Ajax 调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 2014-11-15
    • 2011-08-23
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    相关资源
    最近更新 更多