Редактировать: Мне не хватало двух вещей здесь. Отсутствие «Content-Type: text/xml» в заголовке, возвращаемом вызовом AJAX, мешало JQuery обрабатывать возвращенные данные в качестве документа. Как только это было правильно обработано, этот код правильно разбирался и выводил только имя индекса и проекта.Анализ XML с CDATA с помощью 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[[email protected]]]></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[[email protected]]]></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>
Казалось бы, что XML синтаксический анализ, что это родной для JQuery сбрасывает содержимое Элементы CDATA. FogBugz помещает большинство наших строковых данных в теги CDATA, потому что мы допускаем специальные символы и знаки препинания в большинстве мест. Закрытие вывода в тегах CDATA позволяет нам относительно уверенно относиться к тому, что мы отправляем действительные данные через наш API. PHP-анализ XML работает отлично. Мое исследование в Интернете дает несколько человек, жалующихся на это, но не так много работы. С расширяемостью JQuery я бы подумал, что есть что-то там. Кто-нибудь еще это сделал?
Все изменилось, пожалуйста, обновите свой ответ. http://api.jquery.com/jQuery.parseXML/ – CharlesTWall3