如何通过javascript访问核心ajax响应数据?
例如,如果在index.html文件中的自动绑定模板中有以下代码: index.html如何通过javascript访问核心ajax响应数据?,javascript,polymer,Javascript,Polymer,例如,如果在index.html文件中的自动绑定模板中有以下代码: index.html <template is="auto-binding"> <core-ajax id="ds" auto url="url/to/data.json" response="{{data}}"></core-ajax> <my-items items="{{data}}"></my-items> </template>
<template is="auto-binding">
<core-ajax id="ds" auto url="url/to/data.json" response="{{data}}"></core-ajax>
<my-items items="{{data}}"></my-items>
</template>
通常,我们对核心ajax使用数据绑定,但是如果需要使用JS,您可以从
core ajax
触发的core response
事件中获取响应,或者查看core ajax
标记本身的response
属性
编辑:显示更好的方法
因为最初的海报专门询问如何使用JavaScript获得响应,所以我给出了完整的JS方法。您可以使用绑定对其进行大量清理
{{data.date}}:{{data.time}
addEventListener('template-bound',函数(e){
//用回应做些别的事情
e、 target.ajaxHandler=函数(事件){
日志(event.target.response);
}
});
这是在聚合元素中还是仅在主html文件中?您打算如何处理响应?在html或javascript中使用它?上面的代码位于自动绑定模板内的主html文件中。我计划将数据与javascript/jquery.uncaughtTypeError一起使用:无法读取null的属性'addEventListener',请尝试通过id var ajax=document.querySelector(“#ds”)获取核心ajax;ajax仍然是空的:(你从JSBin示例中得到错误了吗?它在Chrome中对我来说运行良好。你在测试哪个浏览器?在JSBin中运行良好。我在使用Chrome。我用更多的上下文更新了我的原始问题,以防我在其他地方做错了什么。
(function(document) {
'use strict';
document.addEventListener('polymer-ready', function() {
var responseData = ????
});
})(wrap(document));
<core-ajax auto url="http://date.jsontest.com"></core-ajax>
<script>
document.addEventListener('polymer-ready', function() {
var ajax = document.querySelector('core-ajax');
ajax.addEventListener('core-response', function(e) {
console.log(e.detail.response);
// or
console.log(e.target.response);
// or
console.log(ajax.response);
});
});
</script>
<template is="auto-binding">
<core-ajax auto url="http://date.jsontest.com"></core-ajax>
</template>
<script>
var tmpl = document.querySelector('template');
tmpl.addEventListener('template-bound', function() {
var ajax = document.querySelector('core-ajax');
ajax.addEventListener('core-response', function(e) {
console.log(e.detail.response);
// or
console.log(e.target.response);
// or
console.log(ajax.response);
});
});
</script>
<template is="auto-binding">
<core-ajax auto
response="{{data}}"
on-core-response="{{ajaxHandler}}"
url="http://date.jsontest.com"
handleAs="json"></core-ajax>
<h1>{{data.date}}: {{data.time}}</h1>
</template>
<script>
addEventListener('template-bound', function(e) {
// do something else with response
e.target.ajaxHandler = function(event) {
console.log(event.target.response);
}
});
</script>