我正在使用REST与db进行通信的项目中,该项目生成XML代码,下面是其示例。

<ns2:MultipleResponse xmlns:ns2="http://v1_0.model.service.mydomain.com">
    <ns2:AttributeType>
        <ID>1</ID>
        <Version>0</Version>
        <ns2:Name>Type of Address</ns2:Name>
        <ns2:Definition>Definition for Type of Address</ns2:Definition>
        <ns2:DataType>ShortText</ns2:DataType>
        <ns2:MultipleSelect>false</ns2:MultipleSelect>
        <ns2:AttributeGroupType>
            <ID>1</ID>
            <Version>0</Version>
            <ns2:Name>Address</ns2:Name>
            <ns2:Code>ADR</ns2:Code>
            <ns2:Definition>Definition of Address</ns2:Definition>
        </ns2:AttributeGroupType>
    </ns2:AttributeType>
</ns2:MultipleResponse>


我从Spring MVC中的Web GUI调用REST。

我使用jQuery从另一个选择下拉列表中填充一个选择下拉列表。这在Chrome中有效,但在FF或IE中不起作用。
我在FF中使用Firebug,它给了我这个错误:


  使用选择器找不到任何元素:“ AttributeType”


我的jQuery:

<script type="text/javascript">
$(document).ready(function() {
    var html = '<option value>Välj</option>';
    $('#serviceTypeAttributeGroup').change(function() {
        $.ajax({
            url: "http://server/project-web/services/rest/auth/v1_0/attributetypes/servicetypeattributegroup/" + $('#serviceTypeAttributeGroup').val(),
            type: "GET",
            contentType: 'application/xml; charset=utf-8',
            dataType: "xml",
            success: function(data) {
                $(data).find("AttributeType").each(function() {
                    html = '';
                    var $attribute = $(this);
                    var id = $attribute.children("ID:first").text();
                    var name = $attribute.find("Name:first").text();
                    html += '<option value="' + id + '">' + name + '</option>';
                    $('#attributeType').html(html);
                });
            }
        });
        return false;
    });
    $('#attributeType').html(html);
});




我试图将“ AttributeType”更改为“ ns2:AttributeType”,“ ns2\\:AttributeType”和“ ns2\:AttributeType”,但这不会更改FF中的错误消息,并且代码在Chrome中停止工作。

当我查看FF中的XML时,它仅显示纯文本,是否有帮助?在Chrome浏览器中,我看到了所有标签。

我的选择下拉列表:

<tr>
    <th><label for="serviceTypeAttributeGroup"><s:message code="servicetypeattributegroup" />:</label></th>
    <td><sf:select path="serviceTypeAttributeGroup.ID" id="serviceTypeAttributeGroup">
        <sf:option value="0">&nbsp;</sf:option>
        <sf:options items="${listOfAttributeGroups}" itemLabel="attributeGroupType.name" itemValue="ID" />
    </sf:select></td>
</tr>
<tr>
    <th><label for="attributeType"><s:message code="attributetype" />:</label></th>
    <td><sf:select path="attributeType.ID" id="attributeType">
        <sf:option value="0">&nbsp;</sf:option>
    </sf:select></td>
</tr>


有谁知道出什么问题了吗?以及我该如何纠正?

最佳答案

您应该尝试像这样逃避它:

$(data).find("ns2\\:AttributeType")

10-06 05:01