編集:私はここで2つのことを逃していました。AJAX呼び出しによって返されるヘッダーに「Content-Type:text / xml」がないため、JQueryは返されたデータをドキュメントとして扱うことができませんでした。それが正しく処理されると、このコードは正しく解析され、インデックスとプロジェクト名だけが出力されます。
$("a.getprojects").click(function(d){
d.preventDefault();
var api_token = $("#token").val();
var form_fbod = $("#fbod").val();
$.post("fbinfo.php", {fbod: form_fbod, token: api_token, cmd : 'listProjects', extra:''}, function(returned_xml) {
var output = '';
$(returned_xml).find("project").each(function(){
var project = $(this);
output += project.find("ixProject").text();
output += " ";
output += project.find("sProject").text();
output += "\n";
});
$("#output").val(output);
});
});
オリジナル: FogBugz APIとJQueryを使用して、かっこいい小さなツールになると思うものをまとめるのを楽しんでいますが、JQueryの制限に直面しています。CDATAタグはそれを混乱させるようです。
これが私が使用しているコードです:
$("a.getprojects").click(function(d){
d.preventDefault();
var api_token = $("#token").val();
var form_fbod = $("#fbod").val();
$.post("fbinfo.php", {fbod: form_fbod, token: api_token, cmd : 'listProjects', extra:''}, function(xml) {
var output = xml;
$(xml).find("project").each(function(){
var project = $(this);
output += "\n\n";
output += project.html();
});
$("#output").val(output);
});
});
そして、これが私が得る出力です:
<?xml version="1.0" encoding="UTF-8"?><response>
<projects>
<project>
<ixProject>2</ixProject>
<sProject><![CDATA[Inbox]]></sProject>
<ixPersonOwner>2</ixPersonOwner>
<sPersonOwner><![CDATA[Rich]]></sPersonOwner>
<sEmail><![CDATA[rich@example.com]]></sEmail>
<sPhone></sPhone>
<fInbox>true</fInbox>
<ixGroup>1</ixGroup>
<iType>1</iType>
<sGroup><![CDATA[Internal]]></sGroup>
</project>
<project>
<ixProject>1</ixProject>
<sProject><![CDATA[Sample Project]]></sProject>
<ixPersonOwner>2</ixPersonOwner>
<sPersonOwner><![CDATA[Rich]]></sPersonOwner>
<sEmail><![CDATA[rich@example.com]]></sEmail>
<sPhone></sPhone>
<fInbox>false</fInbox>
<ixGroup>1</ixGroup>
<iType>1</iType>
<sGroup><![CDATA[Internal]]></sGroup>
</project>
</projects>
</response>
<ixproject>2</ixproject>
<sproject></sproject>
<ixpersonowner>2</ixpersonowner>
<spersonowner></spersonowner>
<semail></semail>
<sphone></sphone>
<finbox>true</finbox>
<ixgroup>1</ixgroup>
<itype>1</itype>
<sgroup></sgroup>
<ixproject>1</ixproject>
<sproject></sproject>
<ixpersonowner>2</ixpersonowner>
<spersonowner></spersonowner>
<semail></semail>
<sphone></sphone>
<finbox>false</finbox>
<ixgroup>1</ixgroup>
<itype>1</itype>
<sgroup></sgroup>
JQueryにネイティブなXML解析では、CDATA要素の内容が破棄されているように見えます。FogBugzは、ほとんどの場所で特殊文字と句読点を使用できるため、ほとんどの文字列データをCDATAタグに入れます。出力をCDATAタグで囲むと、APIを介して有効なデータを返送しているので比較的安心できます。XMLのPHP解析は問題なく機能します。オンラインでの私の調査では、これについて不満を言う人が何人かいますが、多くの作業は行われていません。JQueryの拡張性により、そこには何かがあると思います。他の誰かがこれを達成しましたか?