나는 "바구니에 추가하기"버튼을 클릭했을 때 JQuery를 가지고 있는데 처음에는 모든 것이 예상대로 작동하지만 두번째 버튼을 클릭하면 제품이 바스켓 (데이터베이스 행 증가 된 수량을 가짐) 서버가 보낸 응답은 SUCCESS 함수의 JQuery에 의해 "캡처 된"것이 아니라 출력됩니다.JQuery GET은 처음에만 작동하며, 두 번째로 서버 응답을받는 이유는 무엇입니까?
나는 왜 이것이 일어날 지 이해하지 못한다. 어떤 생각이 들까? 여기 JQuery와
$(function() {
$('.button').click(function(e) {
e.preventDefault();
var url = $(this).children('a').attr('href');
var elem = $(this);
var parent = $(this).parent().parent();
var html = parent.html(); alert(html);
$.ajax({
type: 'get',
url: url,
data: '',
cache: false,
dataType: 'text',
beforeSend: function(rs) {
parent.html('<div class="basket-item item-border" style="width:896px;text-align:center;"><p class="para"><img src="/media/images/spinner.gif" />Please wait...</p></div>');
},
success: function(rs) {
parent.html(html);
if(rs = 'YES') {
alert('Okay');
} else {
alert('Something went wrong');
}
},
error: function(rs, err) {
if(rs.status == 0) {
alert('--- Offline');
} else if(rs.status == 404) {
alert('404 Not Found');
} else if(rs.status == 501) {
alert('501 Internal Error');
} else if(err == 'timeout') {
alert('--- Timeout');
} else {
alert('--- Unknown');
}
}
});
});
});
그리고
그런 다음 "기다려주십시오 ..."메시지로 대체됩니다
<div>
<div class="basket-item item-border" style="width:512px;text-align:left;">
<p class="para">
<img
width="48"
height="48"
alt="Sample Soap Pack (£3.99)"
src="http://www.mj.local/media/images/products/generic/0929005236213037.jpg" />
<a href="http://www.mj.local/products/sample-soap-pack/">Sample Soap Pack</a></p>
</div>
<div class="basket-item item-border"><p>3.99</p></div>
<div class="basket-item item-border" style="width:256px;text-align:center;">
<p class="button"><a href="http://www.mj.local/shop/add/sample-soap-pack/">
<span class="add">Add to Basket</span>
</a></p>
</div>
</div>
부모 DIV의 내용에 JQuery와 작동하는 HTML의 섹션입니다 예상대로 복원되었으므로 JQuery가 어떤 방식 으로든 변경됩니까? HTML을 바꿀 때 또 다른 JQuery가 제대로 작동합니다. 왜 이렇게되었습니다.
감사합니다.
이 내가 그것을 극복하는 방법도 있지만 확실히 무슨 생각입니다. – ElizabethQ
@ElizabethQ 쉬운 수정은 클릭 대신 live 또는 on을 사용하는 것입니다. –
@ElizabethQ 이것은 잘못된 승인 투표입니다 ...'.delegate()'는 다소 복잡하지만'.live()'는 가치가 떨어지고 느리게 수행됩니다 이 시점에서 승격되어서는 안됩니다 ... – Jasper