주요 편집 이제 영업 이익은 실제 코드를 공개했다고 :
문제는 input
의 값이 업로드 버튼을 클릭하면 언젠가 나중에까지 설정되지 않은, 그러나 당신이 사용하려는 것입니다 그 전에 그 값, 따라서 그것은 아직 초기화되지 않았습니다. 코드를 다음과 같이 변경해야합니다.
jQuery('.upload').live('click', function()
{
var input = jQuery(this).find(".image-path");
if (input.length) {
var data {
action: "doFunction"
}
jQuery.post(ajaxurl, data, function(response) {
input.val(response); // this gives me input.val(response) is not a function
});
}
return false;
});
HTML을 공개하지 않았기 때문에 jQuery가 HTML과 적절하게 일치하는지 아직 확실하지 않습니다. 현재 코드에서 클릭 한 버튼의 자식 인 class="image-path"
인 객체를 찾고 있습니다. 이것은 HTML의 약간 특이한 형태로, 귀하의 jQuery가 수정해야 할 또 다른 문제점 인 귀하의 HTML에 적합하지 않다고 의심하게 만듭니다.
OP 이전의 원래 대답은 실제 코드를 공개했습니다.
- 그것이 응답 콜백에서 사용할 수 있도록
imageObj
가 적절한 범위에 정의되어 있는지 확인하십시오 당신이해야 할 모든
은 두 가지입니다.
- jQuery 개체가
.val()
메서드가있는 적절한 DOM 개체 유형으로 확인되는지 확인하십시오. 일반적으로 <input>
개체는 .val()
메서드가 작동하고 <input>
개체는 일반적으로 컨테이너 개체가 아니기 때문에이 문제는 적어도 문제의 일부라고 생각됩니다.
가 imageObj
가 적절한 범위에서 선언되어 있는지 확인하는 방법은 두 가지가 있습니다 : 그것은 전역 변수로 사용할 수 있도록
- 세계적으로 그것을 선언 (일반적으로 권장되지 않음).
- 상위 범위에서 선언하므로 콜백 함수에서 사용할 수 있습니다. 다음은 상위 범위에서이를 선언하는 예제입니다.이처럼
:
function myFunc() {
var imageObj = jQuery(this).parents('.image-wrapper');
var data = {
action: "doAjax"
};
jQuery.post(ajaxURL, data, function(response)
{
imageObj.val(response); // this is undefined when run
});
}
이 imageObj
는 DOM 객체의 적절한 형태로 확인 있는지 확인하려면, 당신은 당신이 필요로하는 다음 imageObj.length
제로가 아닌 있는지 먼저 확인에 디버깅 코드를 추가 할 수 있습니다 class="image-wrapper"
의 부모 개체가 실제로 메서드를 사용하는 <input>
개체인지 확인합니다. 입력 객체는 일반적으로 컨테이너 객체가 아니기 때문에 문제가 될 수 있습니다. 우리가 HTML을 보여 주었다면 더 구체적으로 조언 할 수 있습니다.
다음은 작동 예제입니다. http://jsfiddle.net/jfriend00/EJ8yu/
html을 게시하십시오. – thecodeparadox
일반적으로 jquery 객체를 전달하고 유지할 수 있습니다. 아마도 코드에 버그가있을 것입니다. –
imageObj는 어디에 정의되어 있습니까? var imageObj로 만들면 괜찮을 수도 있습니다. –