반응형
$(이것은) AJAX 성공 내부에서 작동하지 않음
나는 $(이것)을 사용할 수 있도록 클릭 시 사용하는 오래된 코드를 변경하려고 합니다.문제는 성공 내부에서 $(이것은) 작동하지 않는다는 것입니다.var로 설정하지 않고 이것을 할 수 있는 방법이 있습니까?
$('.addToCart').click(function() {
$.ajax({
url: 'cart/update',
type: 'post',
data: 'product_id=' + $(this).attr("data-id"),
dataType: 'json',
success: function(json) {
if (json['success']) {
$(this).addClass("test");
}
}
});
});
문제
콜백 안에서this
을 말합니다.jqXHR
이벤트 핸들러가 바인딩된 요소가 아닌 Ajax 호출의 개체입니다.자바스크립트에서 작동하는 방법에 대해 자세히 알아봅니다.
해결책
ES2015+를 사용할 수 있다면 화살표 기능을 사용하는 것이 가장 간단한 옵션일 것입니다.
$.ajax({
//...
success: (json) => {
// `this` refers to whatever `this` refers to outside the function
}
});
옵션을 설정할 수 있습니다.
이 개체는 모든 Ajax 관련 콜백의 컨텍스트가 됩니다.기본적으로 컨텍스트는 호출에 사용된 ajax 설정을 나타내는 개체입니다(
$.ajaxSettings
전달된 설정과 병합됨$.ajax
). (...)
$.ajax({
//...
context: this,
success: function(json) {
// `this` refers to the value of `context`
}
});
또는 사용:
$.ajax({
//...
success: $.proxy(function(json) {
// `this` refers to the second argument of `$.proxy`
}, this)
});
또는 의 가치에 대한 참조를 유지합니다.this
콜백 외부:
var element = this;
$.ajax({
//...
success: function(json) {
// `this` refers to the jQXHR object
// use `element` to refer to the DOM element
// or `$(element)` to refer to the jQuery object
}
});
관련된
jQuery(".custom-filter-options .sbHolder ul li a").each(function () {
var myStr = jQuery(this).text();
var myArr = myStr.split(" (");
url = 'your url'; // New Code
data = myArr[0];
try {
jQuery.ajax({
url : url,
context: this,
type : 'post',
data : data,
success : function(data) {
if(data){
jQuery(this).html(data);
}else{
jQuery(this).html(myArr[0]);
}
}
});
} catch (e) {
}
});
언급URL : https://stackoverflow.com/questions/6394812/this-inside-of-ajax-success-not-working
반응형
'programing' 카테고리의 다른 글
ForEach-Object - Parallel에서 사용자 지정 함수를 전달하는 방법 (0) | 2023.11.05 |
---|---|
Javascript/Angular JS에서 반올림하는 방법 -- 그러나 중요하지 않은 숫자를 제거하는 방법 (0) | 2023.11.05 |
MariaDB Community Server 10.5 Alpha의 MariaDB Columnstore 1.4 (0) | 2023.11.05 |
WordPress admin: 페이지 속성에 초안 페이지 표시 부모 페이지 드롭다운 (0) | 2023.11.05 |
EnumProcesses() 대 CreateTool help32Snapshot() (0) | 2023.11.05 |