Polymer core-ajax xml响应元素为null

时间:2015-01-10 05:45:13

标签: javascript ajax xml polymer web-component

我正在尝试使用Polymer core-ajax元素从在线API中提取数据。通过开发人员工具检查API请求是否成功使用代码200并返回预期的XML响应。但响应对象为null阻止我继续。

这是我的核心要素,

<polymer-element name="get-employees" attributes="employeeList">
    <template>      
        <core-ajax id="ajax" auto
               url="https://localhost:8443/GetEmployees"
               method='POST'
               headers='{"X-Token":"4517612052875154027"}'
               handleAs='xml'
               contentType="application/xml"
               response= "{{resp}}"
               on-core-complete="{{success}}"
               on-core-error="{{errorF}}"
               body='<?xml version="1.0" encoding="UTF-8" standalone="no"?><GetEmployees xmlns="http://www.22s.net/emp/1.0"><<Employees><Employee><EmployeeNo/><TitleCode/><Initials/>   <GivenNames/><Surname/></GetEmployees>'>
        </core-ajax>
        <template repeat="{{employee in resp | nodeList('Employee') }}" id="tem">
          <div class="empcard" flex>
            <div>{{employee || nodeText('GivenNames')}}</div>
          </div>
        </template>
    </template>
    <script>
        Polymer('get-employees', {
        errorF: function(){
            console.log('Error occured');
        },
        success: function(event, detail, sender){
            console.log(event);
        },          
        nodeList: function(element, name) {
            var arr;
            arr =  element ?
              [].slice.call(element.querySelectorAll(name)) : ['No Employees for the given query'];
            return arr;
        },
        nodeText: function(element, name) {
            return element.querySelector(name).innerHTML;

        }
    });
    </script>
</polymer-element>

以下列格式返回的XML

<?xml version="1.0" encoding="UTF-8"?>
<GetEmployeesResponse xmlns="http://www.22s.net/emp/1.0">
<APIResponseStatus>
    <Code>OK</Code>
</APIResponseStatus>
<Employees>
    <Employee>
        <EmployeeNo>ISH001</EmployeeNo>
        <GivenNames>Omid</GivenNames>
        <Initials>OR</Initials>
        <Surname>KORDESTANI</Surname>
        <TitleCode>Mr</TitleCode>
    </Employee>
    <Employee>
        <EmployeeNo>ISH002</EmployeeNo>
        <GivenNames>Gary</GivenNames>
        <Initials>GR</Initials>
        <Surname>PARANTE</Surname>
        <TitleCode>Mr</TitleCode>
    </Employee>     
</Employees>
</GetEmployeesResponse>

当我在成功方法中调试事件详细信息对象时,方法不包含返回XML或 resp 对象。 nodeList 函数的元素参数也会返回“No Employees ....”消息。

有人可以让我知道我搞砸了哪里。我已经尝试了其他方法,但到目前为止还没有成功。

修改: 当我将响应XML保存在服务器文件中并向页面显示GET请求时,

[Object Element]  
[Object Element]
[Object Element]

通过模板。它与XML完全相同。我很困惑!!!!!!!!

提前致谢, 的Ish

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。确保服务器使用

返回正确的Header
'Content-Type: application/xml'

和/或返回的文件扩展名为.xml。我使用简单的python SimpleHTTPServer在同一文件上对它进行了两次测试:文件是否具有扩展.xml core-ajax按预期工作;将扩展程序更改为.kml会导致null响应按组件进行。

希望它有所帮助。