2011-06-14 3 views
3

ADVANCED_OPTIMIZATIONS가있는 클로저 컴파일러를 사용할 때 jQuery.ajax.data 객체가 변경되었습니다.폐쇄 컴파일러를 사용할 때 jQuery.ajax.data 객체를 보존하는 방법은 무엇입니까?

$.ajax({ 
    type: "POST", 
    url: "ajax.php", 
    data: { 
    act : "some" 
    }, 
    success : function(data){} 
}); 

jQuery.ajax.data 객체가 {L : "some"}로 변환됩니다.

'act' : "some"과 같이 따옴표를 사용할 수 있지만 따옴표없이 일하기. 내 externs 파일에 있습니다 :

/** @type {Object.<string,*>} */ jQuery.ajax.data; 하지만이 작동하지 않습니다. 폐쇄 컴파일러 버전 1043

+0

당신은 폐쇄를하지 말 따옴표가 필요합니다 재산 이름을 mangle. 이것은 필수 사항입니다. 따옴표 없이도 작업을 수행 할 수는 없습니다. –

+0

extern 파일이 올바르지 않습니다. 'jQuery.ajax.data'는'jQuery.ajax' 아래의'data' 속성을 의미합니다. 'jQuery.ajax' (함수)에'data' 속성이 없습니다. 'data'는 인자로'jQuery.ajax'에 전달 된 객체의 속성입니다. 당신은 잘못된 것을 "내재화"하고 있습니다. –

+0

그러나 다음과 같이하면 :'var foo = {}; extern 파일에서 Closure는 "act"(또는 "foo"라고하는 임의의 변수)라는 이름을 ** ALL ** 오브젝트 *에 * 포함하여 이름을 바꿀 수 없습니다. "데이터"속성에 전달 된 개체 해시에서. 그러나 "act"라는 모든 속성은 원하는 경우에도 이름이 변경되지 않습니다! –

답변

0

는 같은과 externs을 시도해보십시오

var jQuery = {}; 
jQuery.ajax = { 
    data: '' 
} 

이 'jQuery.ajax'과 이름을 변경하지 않습니다 'jQuery.ajax.data'

관련 문제