我有一个模板页面,当用户访问url(http://mysite/new_device
)时显示它
config.add_route('new_device', '/new_device')
在视图.py方法:
^{pr2}$当我转到该链接时,页面将正确显示,jinja2打印在python方法的return语句中传递的所有数组和字典。在
在我的页面上,我有一个select
标记,它有一组用户可以选择的选项(Transformer、switcher等),它将根据所选的选项加载字段(ajax调用获取数据)。我要做的是使用jquery和ajax加载适当的字段,方法是检查我所拥有的select
上的更改,获得id,然后对python方法new_device
进行ajax调用。在
$("#deviceTypes").change(function () {
var deviceTypeID = $(this).val();
var data = {
"deviceTypeID": deviceTypeID
}
$.ajax({
url: "http://127.0.0.1:6543/new_device",
type: "POST",
data: JSON.stringify(data),
contentType: 'application/json; charset=utf-8',
success: function (response, textStatus, jqXHR) {
},
error: function (jqXHR, textStatus, errorThrown) {
//change this back to error throwing after wards
alert("error");
}
});
});
我遇到的问题是数据是从方法返回的,但是客户端没有用新的信息进行更新。在
这是我的html页面的一个片段
<select id="deviceTypes" class="inputBoxes">
{% for key, value in deviceTypes.iteritems() %}
<option value="{{key}}">{{value}}</option>
{% endfor %}
</select>
<br />
{% for sec in sections %}
<label class="inputBoxLabels">{{sec}}</label><br />
{% endfor %}
换句话说,这里的jinja2没有打印新返回的信息。它只能在初始加载时访问一次数据吗?这是如何工作的?在
经过一番考虑,我想出了一个解决办法。 在我的url中,我只添加了一个
deviceTypeID
参数然后,每当用户从列表中选择一个选项时,我只需将页面重定向到该id,然后加载他从python方法返回的新数据
^{pr2}$我不是python或jinja2开发人员,但从您的解释来看,您似乎希望用AJAX调用的数据填充deviceTypes下拉列表。为此,您需要在Success handler中添加DOM操作的逻辑。在
您可以参考下面的链接在python中创建JSON数据。在
How to populate a dropdownlist with json data in jquery?
相关问题 更多 >
编程相关推荐