2011-06-14 70 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; 但這不起作用。 Closure編譯器版本1043

+0

你需要引號告訴封閉不破壞財產名稱。這是一項要求。你不能在沒有引號的情況下使用它。 – 2011-06-15 08:50:24

+0

你的外部文件也不正確。 'jQuery.ajax.data'表示'jQuery.ajax'下的'data'屬性。 'jQuery.ajax'(這是一個函數)沒有'data'屬性。 'data'是作爲參數傳遞給'jQuery.ajax'的對象的屬性。你是「外部」錯誤的東西。 – 2011-06-23 06:05:51

+0

但是,如果你這樣做:'var foo = {}; foo.act = null;'在你的extern文件中,Closure將不再重命名任何名爲「act」的屬性(或者任何名爲「foo」的變量,你不關心)** ALL **對象,*包括*在你的對象散列中傳遞給「數據」屬性。但是,請注意,所有名爲「act」的屬性都不會重命名,即使您希望它們也可以! – 2011-06-23 06:07:32

回答

0

嘗試實習醫生的東西,如:

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

這將不會重命名「jQuery.ajax」和「jQuery.ajax.data」

相關問題