首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在xml网页上对JSON的ajax调用

在xml网页上对JSON的ajax调用
EN

Stack Overflow用户
提问于 2014-09-03 12:23:47
回答 2查看 525关注 0票数 0

我已经对包含xml的网页进行了ajax调用。它以xml的形式返回网页,我如何返回它,使它像JSON一样更易读(将它转换为JSON)。我已经查看过accepts头,但它们似乎不起作用。这是我的代码:

代码语言:javascript
复制
            var jqXHR = jQuery.ajax({
            url: NBSBranchSiteContextURL , 
            accepts:{json:'application/json'},
            async:false            });
    alert(jqXHR.responseText);

xml是:

代码语言:javascript
复制
  <?xml version="1.0" encoding="utf-8" ?> 
- <d:query xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" m:type="Microsoft.Office.Server.Search.REST.SearchResult">
  <d:ElapsedTime m:type="Edm.Int32">62</d:ElapsedTime> 
- <d:PrimaryQueryResult m:type="Microsoft.Office.Server.Search.REST.QueryResult">
  <d:CustomResults m:type="Collection(Microsoft.Office.Server.Search.REST.CustomResult)" /> 
  <d:QueryId>d6b8310d-58a6-49e0-bb0e-e9e10ca9de98</d:QueryId> 
  <d:QueryRuleId m:type="Edm.Guid">00000000-0000-0000-0000-000000000000</d:QueryRuleId> 
  <d:RefinementResults m:null="true" /> 
- <d:RelevantResults m:type="Microsoft.Office.Server.Search.REST.RelevantResults">
  <d:GroupTemplateId m:null="true" /> 
  <d:ItemTemplateId m:null="true" /> 
- <d:Properties>
- <d:element m:type="SP.KeyValue">
 <d:Key>GenerationId</d:Key> 
  <d:Value>9223372036854775806</d:Value> 
 <d:ValueType>Edm.Int64</d:ValueType> 
 </d:element>
- <d:element m:type="SP.KeyValue">
 <d:Key>ExecutionTimeMs</d:Key> 
 <d:Value>15</d:Value> 
 <d:ValueType>Edm.Int32</d:ValueType> 
 </d:element>
- <d:element m:type="SP.KeyValue">
 <d:Key>QueryModification</d:Key> 
 <d:Value>CostCentreBranchPrefix:JH123 ContentClass=urn:content-class:SPSPeople</d:Value> 
 <d:ValueType>Edm.String</d:ValueType> 
 </d:element>
- <d:element m:type="SP.KeyValue">
 <d:Key>RenderTemplateId</d:Key> 
 <d:Value>~sitecollection/_catalogs/masterpage/Display Templates/Search/Group_Default.js</d:Value> 
 <d:ValueType>Edm.String</d:ValueType> 
 </d:element>
- <d:element m:type="SP.KeyValue">
 <d:Key>StartRecord</d:Key> 
 <d:Value>0</d:Value> 
 <d:ValueType>Edm.Int32</d:ValueType> 
 </d:element>
- <d:element m:type="SP.KeyValue">
 <d:Key>IsLastBlockInSubstrate</d:Key> 
 <d:Value>true</d:Value> 
 <d:ValueType>Edm.Boolean</d:ValueType> 
 </d:element>
- <d:element m:type="SP.KeyValue">
 <d:Key>IsFirstBlockInSubstrate</d:Key> 
 <d:Value>false</d:Value> 
 <d:ValueType>Edm.Boolean</d:ValueType> 
 </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>IsFirstPinnedResultBlock</d:Key> 
  <d:Value>false</d:Value> 
  <d:ValueType>Edm.Boolean</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>IsLastPinnedResultBlock</d:Key> 


 <d:Value>false</d:Value> 
  <d:ValueType>Edm.Boolean</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>IsFirstRankedResultBlock</d:Key> 
  <d:Value>true</d:Value> 
  <d:ValueType>Edm.Boolean</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>IsLastRankedResultBlock</d:Key> 
  <d:Value>true</d:Value> 
  <d:ValueType>Edm.Boolean</d:ValueType> 
  </d:element>
  </d:Properties>
  <d:ResultTitle m:null="true" /> 
  <d:ResultTitleUrl m:null="true" /> 
  <d:RowCount m:type="Edm.Int32">2</d:RowCount> 
- <d:Table m:type="SP.SimpleDataTable">
- <d:Rows>
- <d:element m:type="SP.SimpleDataRow">
- <d:Cells>
- <d:element m:type="SP.KeyValue">
  <d:Key>Rank</d:Key> 
  <d:Value>6.42380905151367</d:Value> 
  <d:ValueType>Edm.Double</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>DocId</d:Key> 
  <d:Value>11</d:Value> 
  <d:ValueType>Edm.Int64</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>PreferredName</d:Key> 
  <d:Value>Dave</d:Value> 
  <d:ValueType>Edm.String</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>JobTitle</d:Key> 
  <d:Value>man</d:Value> 
  <d:ValueType>Edm.String</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>EmailAddress</d:Key> 
  <d:Value>daveH@</d:Value> 
  <d:ValueType>Edm.String</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>PartitionId</d:Key> 
  <d:Value>0c37852b-34d0-418e-91c6-2ac25af4be5b</d:Value> 
  <d:ValueType>Edm.Guid</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>UrlZone</d:Key> 
  <d:Value>0</d:Value> 
  <d:ValueType>Edm.Int32</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>AAMEnabledManagedProperties</d:Key> 
  <d:Value>AttachmentURI;deeplinks;DefaultEncodingURL;ExternalMediaURL;HierarchyUrl;OrgParentUrls;OrgUrls;OriginalPath;ParentLink;Path;PictureThumbnailURL;PictureURL;PublishingImage;recommendedfor;ServerRedirectedEmbedURL;ServerRedirectedPreviewURL;ServerRedirectedURL;SiteLogo;SitePath;SPSiteURL;UserEncodingURL</d:Value> 
  <d:ValueType>Edm.String</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>EditProfileUrl</d:Key> 
  <d:Value m:null="true" /> 
  <d:ValueType>Null</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>ProfileViewsLastMonth</d:Key> 
  <d:Value m:null="true" /> 
  <d:ValueType>Null</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>ProfileViewsLastWeek</d:Key> 
  <d:Value m:null="true" /> 
  <d:ValueType>Null</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>ProfileQueriesFoundYou</d:Key> 
  <d:Value m:null="true" /> 
  <d:ValueType>Null</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>RenderTemplateId</d:Key> 
  <d:Value>~sitecollection/_catalogs/masterpage/Display Templates/Search/Item_Default.js</d:Value> 
  <d:ValueType>Edm.String</d:ValueType> 
  </d:element>
  </d:Cells>
  </d:element>
- <d:element m:type="SP.SimpleDataRow">
- <d:Cells>
- <d:element m:type="SP.KeyValue">
  <d:Key>Rank</d:Key> 
  <d:Value>6.42380905151367</d:Value> 
  <d:ValueType>Edm.Double</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>DocId</d:Key> 
  <d:Value>13</d:Value> 
  <d:ValueType>Edm.Int64</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>PreferredName</d:Key> 
  <d:Value>Asad</d:Value> 
  <d:ValueType>Edm.String</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>JobTitle</d:Key> 
  <d:Value>Software</d:Value> 
  <d:ValueType>Edm.String</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>EmailAddress</d:Key> 
  <d:Value>asadr@</d:Value> 
  <d:ValueType>Edm.String</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>PartitionId</d:Key> 
  <d:Value>0c37852b-34d0-418e-91c6-2ac25af4be5b</d:Value> 
  <d:ValueType>Edm.Guid</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>UrlZone</d:Key> 
  <d:Value>0</d:Value> 
  <d:ValueType>Edm.Int32</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>AAMEnabledManagedProperties</d:Key> 
  <d:Value>AttachmentURI;deeplinks;DefaultEncodingURL;ExternalMediaURL;HierarchyUrl;OrgParentUrls;OrgUrls;OriginalPath;ParentLink;Path;PictureThumbnailURL;PictureURL;PublishingImage;recommendedfor;ServerRedirectedEmbedURL;ServerRedirectedPreviewURL;ServerRedirectedURL;SiteLogo;SitePath;SPSiteURL;UserEncodingURL</d:Value> 
  <d:ValueType>Edm.String</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>EditProfileUrl</d:Key> 
  <d:Value m:null="true" /> 
  <d:ValueType>Null</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>ProfileViewsLastMonth</d:Key> 
  <d:Value m:null="true" /> 
  <d:ValueType>Null</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>ProfileViewsLastWeek</d:Key> 
  <d:Value m:null="true" /> 
  <d:ValueType>Null</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>ProfileQueriesFoundYou</d:Key> 
  <d:Value m:null="true" /> 
  <d:ValueType>Null</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>RenderTemplateId</d:Key> 
  <d:Value>~sitecollection/_catalogs/masterpage/Display Templates/Search/Item_Default.js</d:Value> 
  <d:ValueType>Edm.String</d:ValueType> 
  </d:element>
  </d:Cells>
  </d:element>
  </d:Rows>
  </d:Table>
  <d:TotalRows m:type="Edm.Int32">2</d:TotalRows> 
  <d:TotalRowsIncludingDuplicates m:type="Edm.Int32">2</d:TotalRowsIncludingDuplicates> 
  </d:RelevantResults>
  <d:SpecialTermResults m:null="true" /> 
  </d:PrimaryQueryResult>
- <d:Properties>
- <d:element m:type="SP.KeyValue">
  <d:Key>RowLimit</d:Key> 
  <d:Value>100</d:Value> 
  <d:ValueType>Edm.Int32</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>SourceId</d:Key> 
  <d:Value>b09a7990-05ea-4af9-81ef-edfab16c4e31</d:Value> 
  <d:ValueType>Edm.Guid</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>EnableInterleaving</d:Key> 
  <d:Value>true</d:Value> 
  <d:ValueType>Edm.Boolean</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>piPageImpression</d:Key> 
  <d:Value>23924_1185_2057</d:Value> 
  <d:ValueType>Edm.String</d:ValueType> 
  </d:element>
- <d:element m:type="SP.KeyValue">
  <d:Key>SerializedQuery</d:Key> 
  <d:Value><Query Culture="en-GB" EnableStemming="True" EnablePhonetic="False" EnableNicknames="False" IgnoreAllNoiseQuery="True" SummaryLength="180" MaxSnippetLength="180" DesiredSnippetLength="90" KeywordInclusion="0" QueryText="CostCentreBranchPrefix:JH123" QueryTemplate="" TrimDuplicates="True" Site="09325ab3-1fbf-4798-8c94-9b7547bfae90" Web="b21f0568-898a-4fd0-b911-916c1491ba15" KeywordType="True" HiddenConstraints="" /></d:Value> 
  <d:ValueType>Edm.String</d:ValueType> 
  </d:element>
  </d:Properties>
  <d:SecondaryQueryResults m:type="Collection(Microsoft.Office.Server.Search.REST.QueryResult)" /> 
  <d:SpellingSuggestion m:null="true" /> 
  <d:TriggeredRules m:type="Collection(Edm.Guid)" /> 
  </d:query>

我想要它返回的地方,无论是<d:Key>PreferredName,JobTitle和电子邮件<d:Value>,所以在这个例子中,戴夫,Asad的名字。男性和软件的职位和daveH@和asadr@的电子邮件。未来可能会有更多的价值

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-03 12:54:52

您可以使用dataType: "xml"指定响应为XML,然后读取success回调中的data参数或使用responseXML属性。可以使用DOM来遍历结果,这与用于遍历HTML文档的API相同。这意味着您可以使用jQuery将DOM抽象出去,就像它用于HTML选择和遍历一样。

假设您的XML是

代码语言:javascript
复制
<library>
    <book title="The Sun Also Rises" author="Hemingway" />
    <book title="The Hunger Games" author="Collins" />
    <magazine title="Time" issue="578" />
    <magazine title="Tacos Monthly" issue="3" />
</library>

您可以获取它并使用jQuery检查它:

代码语言:javascript
复制
var jqXHR = jQuery.ajax({
    url: NBSBranchSiteContextURL,
    dataType: "xml", 
    success: function(data) {
        $xml = $(data);

        // get title attribute of the first book, "The Sun Also Rises"
        $xml.find("book:eq(0)").attr("title");

        // get author attribute of the book entitled "The Hunger Games"
        $xml.find("book[title='The Hunger Games']").attr("author");

        $xml.find("magazine").each(function(idx, mag) {
            var $m = $(mag);
            alert($m.attr("title") + " " + $m.attr("issue"));
        });
    }
});
票数 1
EN

Stack Overflow用户

发布于 2014-09-03 12:31:07

如果没有设置页面,您就不能强迫服务器以JSON (或其他任何东西)的形式提供页面。因此,正如一些评论所建议的那样,如果您想在JSON中使用它,则必须转换返回的内容,尽管您可能不需要转换(因为您还没有说出要对数据做什么)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25644248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档