這是我的代碼:AJAX查詢沒有正確的參考變量
$('.store-card').each(function() {
placeid = $(this).data('placeid');
latlng = $(this).data('latlng');
card = this;
console.log("1 ", card);
$.ajax({
url: '/stores/placeid/',
method: "GET",
data: {
placeid: placeid
},
dataType: 'json',
success: function(response) {
console.log(card);
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
這裏的問題是,由當時的AJAX查詢返回的響應,refernce到card
有已經改變,因此card
將始終具有最後一個項目的值。
此控制檯輸出:
1 <div class="store-card" data-map="#slink-10" data-timing="#stmg-10" data-openhours="#sopen-10" data-placeid="ChIJTZD7ufceDTkRXZdMW4ObIM4" data-latlng="">
1 <div class="store-card" data-map="#slink-9" data-timing="#stmg-9" data-openhours="#sopen-9" data-placeid="ChIJK-bJgRwDDTkR5vzdTwSc7JI" data-latlng="">
1 <div class="store-card" data-map="#slink-22" data-timing="#stmg-22" data-openhours="#sopen-22" data-placeid="ChIJk2W43rPjDDkRMeRmDOo8QT8" data-latlng="">
1 <div class="store-card" data-map="#slink-11" data-timing="#stmg-11" data-openhours="#sopen-11" data-placeid="ChIJebql01D7DDkRMELWwmmpS_A" data-latlng="">
<div class="store-card" data-map="#slink-11" data-timing="#stmg-11" data-openhours="#sopen-11" data-placeid="ChIJebql01D7DDkRMELWwmmpS_A" data-latlng="">
<div class="store-card" data-map="#slink-11" data-timing="#stmg-11" data-openhours="#sopen-11" data-placeid="ChIJebql01D7DDkRMELWwmmpS_A" data-latlng="">
<div class="store-card" data-map="#slink-11" data-timing="#stmg-11" data-openhours="#sopen-11" data-placeid="ChIJebql01D7DDkRMELWwmmpS_A" data-latlng="">
<div class="store-card" data-map="#slink-11" data-timing="#stmg-11" data-openhours="#sopen-11" data-placeid="ChIJebql01D7DDkRMELWwmmpS_A" data-latlng="">
我怎麼能保證每個$.ajax
都會有相應的參考card
,而不是最新的參考?
不要忘記加上'var'當你聲明變量! –
使用'type:「GET」'代替'method:「GET」'。 – Shubham