使用 jquery 和 ajax 在 Jinja 中处理 href
Handling href in Jinja with jquery and ajax
我通过按顺序循环每个项目来显示名为 workshop 的变量中提供的项目列表
{% for car in workshop %}
<div id="newDiv" >
<a class="carsInWorkshop" title = "{{car.carId}}" href="./getPriceforCar/{{car.carId}}">{{ car.carType }}</a>
</div>
{% endfor %}
当有人点击带有超链接的项目时
项目 1
项目 2
项目 3
然后直接将 href 调用路由到我的烧瓶应用程序,我想进行 ajax 调用,并处理结果
$(".carsInWorkshop").click(function(event) {
event.preventDefault();
console.log($(".carsInWorkshop").attr('href'));
loadPrice($(".carsInWorkshop").attr('href'));
});
loadPrice = function(link, callback) {
console.log('loading price for ' + link);
$.ajax({
type: "GET",
url: link,
cache: false,
xhrFields: {
withCredentials: true
},
success: function(data) {
$('div#pop-up-price').show();
$('#carId').val(data.price);
}
});
}
但是,出于某种原因,每当我单击项目 2 或项目 3 时,结果始终显示为项目 1 的 href。 href 始终包含第一项的 carId。
如果我将调用直接路由到 Flask,我会根据项目点击获得正确的 carId。所以,似乎 jquery 的处理不正确。
在 Jinja 工作以从 "for loops" 访问 href 时,是否对 jquery 进行了特殊处理?
问题是 $(".carsInWorkshop")
总是 returns 3 个元素和 .attr
returns 第一个元素的 href
我有一个工作样本here
通过使用 event.target
,您可以确保检索到正确的元素,在本例中是用户单击的元素。
尽管这可行,但我还是建议您将该类型存储在其他地方。而是将 href 更改为 "" 并使用 jquery data 将类型直接附加到元素,以便以后可以轻松检索它。
$('#card-type-type1').data('type', '<some_type>')
$(event.target).data('type')
您可以将它放在 jinja 的脚本块中
编辑: 我已经更新了 jsfiddle 和示例代码
我通过按顺序循环每个项目来显示名为 workshop 的变量中提供的项目列表
{% for car in workshop %}
<div id="newDiv" >
<a class="carsInWorkshop" title = "{{car.carId}}" href="./getPriceforCar/{{car.carId}}">{{ car.carType }}</a>
</div>
{% endfor %}
当有人点击带有超链接的项目时
然后直接将 href 调用路由到我的烧瓶应用程序,我想进行 ajax 调用,并处理结果
$(".carsInWorkshop").click(function(event) {
event.preventDefault();
console.log($(".carsInWorkshop").attr('href'));
loadPrice($(".carsInWorkshop").attr('href'));
});
loadPrice = function(link, callback) {
console.log('loading price for ' + link);
$.ajax({
type: "GET",
url: link,
cache: false,
xhrFields: {
withCredentials: true
},
success: function(data) {
$('div#pop-up-price').show();
$('#carId').val(data.price);
}
});
}
但是,出于某种原因,每当我单击项目 2 或项目 3 时,结果始终显示为项目 1 的 href。 href 始终包含第一项的 carId。
如果我将调用直接路由到 Flask,我会根据项目点击获得正确的 carId。所以,似乎 jquery 的处理不正确。
在 Jinja 工作以从 "for loops" 访问 href 时,是否对 jquery 进行了特殊处理?
问题是 $(".carsInWorkshop")
总是 returns 3 个元素和 .attr
returns 第一个元素的 href
我有一个工作样本here
通过使用 event.target
,您可以确保检索到正确的元素,在本例中是用户单击的元素。
尽管这可行,但我还是建议您将该类型存储在其他地方。而是将 href 更改为 "" 并使用 jquery data 将类型直接附加到元素,以便以后可以轻松检索它。
$('#card-type-type1').data('type', '<some_type>')
$(event.target).data('type')
您可以将它放在 jinja 的脚本块中
编辑: 我已经更新了 jsfiddle 和示例代码