Javascript Backbone.js:访问通过Ajax提供服务的HTML片段中返回的JSON?
我正在构建一个web应用程序,后端使用Django,前端使用主干 当用户执行搜索(或为现有搜索加载更多结果)时,我使用Django提供的部分模板通过Ajax检索结果 这很好,但是我还想更新搜索过滤器,这样用户就不能优化结果为零的查询集 例如:如果用户搜索1000美元到3000美元之间的汽车,但没有蓝色汽车可用,我想在搜索表单中将“蓝色”颜色选择器灰显。因此,除了返回结果外,我还返回一个带有可用颜色的JSON对象 我的问题是:我知道如何将结果注入页面的HTML元素,并且知道如何在模板片段中返回JSON但如何从主干网内部访问JSON? 这是我的主干模型。它在执行Ajax请求时侦听搜索事件,并将其“results”属性设置为Ajax返回的模板片段:Javascript Backbone.js:访问通过Ajax提供服务的HTML片段中返回的JSON?,javascript,django,backbone.js,Javascript,Django,Backbone.js,我正在构建一个web应用程序,后端使用Django,前端使用主干 当用户执行搜索(或为现有搜索加载更多结果)时,我使用Django提供的部分模板通过Ajax检索结果 这很好,但是我还想更新搜索过滤器,这样用户就不能优化结果为零的查询集 例如:如果用户搜索1000美元到3000美元之间的汽车,但没有蓝色汽车可用,我想在搜索表单中将“蓝色”颜色选择器灰显。因此,除了返回结果外,我还返回一个带有可用颜色的JSON对象 我的问题是:我知道如何将结果注入页面的HTML元素,并且知道如何在模板片段中返回JS
var SearchModel = Backbone.Model.extend({ ..
performSearch: function() {
$.get(this.get("querystr"), function(html) {
self.set("results", html);
// TODO: How to extract JSON results
});
} ...
});
Django通过Ajax返回的模板片段包含HTML和JSON:
<script type="text/javascript">
var queryset_propeties = JSON.parse('{{queryset_properties|jsonify|escapejs}}');
</script>
<ul id="results">
{% for results in results %}
<li>{{ result }}</li>
{% endfor %}
</ul>
我的问题是queryset\u属性
对象不是最新的,我不知道如何从主干代码内部访问它
我想到了以下几点:
$.get
请求使用主干网。它具有适当的成功和错误回调,就像jQuery的$.get
要以主干方式进行,首先必须设置:
初始化模型调用fetch
后:
var sm = new SearchModel({querystr: "http://example.com?car"});
sm.fetch({ // calls model's url
success: function (model) {
// you can access the returned json object here by doing:
model.get('price'); // assuming your json looks like { price: 500 }
},
error: function (model) {
}
});
谢谢
fetch
听起来不错,但我不确定这是否适合我,因为我需要在同一个请求中同时返回HTML和JSON。或者我可以返回一个JSON对象,其中一个值是HTML字符串。。。?
var SearchModel = Backbone.Model.extend({
url: this.get("querystr")
});
var sm = new SearchModel({querystr: "http://example.com?car"});
sm.fetch({ // calls model's url
success: function (model) {
// you can access the returned json object here by doing:
model.get('price'); // assuming your json looks like { price: 500 }
},
error: function (model) {
}
});