2015-05-09 37 views
2

我從我的magento項目獲取js錯誤如下。我的項目URL是check my project。我認爲這是與原型js.i錯誤,我試過js noconflict但沒用。原型的Java腳本錯誤

錯誤:

Uncaught TypeError: (intermediate value)(intermediate value)(intermediate value)(intermediate value)(intermediate value) is not a function www.bigzaar.com/:1 Uncaught ReferenceError: jQuery is not defined www.bigzaar.com/:93 Uncaught ReferenceError: jQuery is not defined www.bigzaar.com/:151 Uncaught ReferenceError: jQuery is not defined www.bigzaar.com/:157 Uncaught ReferenceError: jQuery is not defined www.bigzaar.com/:420 Uncaught ReferenceError: jQuery is not defined jquery.mobile.customized.min.js:10 Uncaught ReferenceError: jQuery is not defined camera.js:2238 Uncaught ReferenceError: jQuery is not defined www.bigzaar.com/:607 Uncaught ReferenceError: jQuery is not defined www.bigzaar.com/:704 Uncaught ReferenceError: jQuery is not defined www.bigzaar.com/:863 Uncaught ReferenceError: jQuery is not defined

我的js文件

/********Javascript for FREE TEXT SEARCH ************/ 
var Quicksearch = Class.create(); 
var idSearchInput = ''; 
Quicksearch.prototype = { 
    initialize: function(searchUrl,resultNotice,idSearchInput){ 
     this.idSearchInput = idSearchInput; 
     this.searchUrl = searchUrl;  
     this.onSuccess = this.onSuccess.bindAsEventListener(this);   
     this.onFailure = this.onFailure.bindAsEventListener(this);    
     this.currentSearch = '';  
     this.resultNotice = resultNotice; 
    }, 
    search: function(){ 
     var searchBox = $(this.idSearchInput); 

     if(searchBox.value=='') 
     { 
      return; 
     } 

     if ((this.currentSearch!="") &&(searchBox.value == this.currentSearch)) { 
      return; 
     } 
     this.currentSearch = searchBox.value; 

     searchBox.className = 'loading-result input-text'; 
     var keyword = searchBox.value; 


     url = this.searchUrl+"keyword/" + escape(keyword); 

     new Ajax.Request(url, { 
       method: 'get',   
       onSuccess: this.onSuccess, 

       onFailure: this.onFailure 
      });  
    }, 
    onFailure: function(transport){ 
     $(this.idSearchInput).className ="input-text"; 
    }, 
    onSuccess: function(transport) 
    { 
     var showResults = $('showResults'); 
     showResults.style.display = "block"; 
     var listResults = $('listResults'); 
     listResults.style.display = "block"; 
     var searchBox = $(this.idSearchInput); 
     if (transport && transport.responseText) { 
      try{ 
       response = eval('(' + transport.responseText + ')'); 
      } 
      catch (e) { 
       response = {}; 
      } 

      if (response.html != "") { 
       this.currentSearch = searchBox.value; 
       listResults.update(response.html); 
       var searchResultNotice = this.resultNotice; 
       var strNotice = searchResultNotice.replace("{{keyword}}",this.currentSearch); 
       this.updateResultLabel(strNotice); 
       searchBox.className = 'search-complete input-text'; 
      } 
      else 
      { 
       listResults.update(response.html); 
       this.updateResultLabel('No results for "<span class="keyword">'+this.currentSearch+'</span>"'); 
       searchBox.className ="search-complete input-text"; 
      }   
     }  
    }, 
    updateResultLabel: function(message) 
    { 
     $("resultLabel").update(message); 
    } 
} 

我的js調用函數

<script type="text/javascript"> 
    var quicksearch = new Quicksearch(
     '<?php echo $this->getUrl('freetextsearch/search/quicksearch') ?>', 
     '<?php echo $resultNotice ?>', 
     'input_search' 
    ); 
    var numberChar = <?php echo Mage::getStoreConfig('freetextsearch/quick_search_setting/number_character')?>; 
    Event.observe('input_search', 'keyup', function(event){ 
     var searchBox = $('input_search'); 
     if(searchBox.value.length >= numberChar){ 
      quicksearch.search(); 
     } 
    }); 
    function closeDropdown() { 
     var showResults = $('showResults'); 
     showResults.style.display = "none"; 
    } 
</script> 

請幫我解決這個error.any幫助將很可觀

+0

其他幫助? –

回答

1

使用Chrome De bugger控制檯並在「來源」面板中啓用「暫停異常」。 Chrome會直接向您顯示發生異常的行。如果沒有,重新加載頁面一次或兩次(如果腳本內嵌在模板中某處,並且在Opera或其他基於Webkit的瀏覽器中使用該調試器,那麼這是必要的;而在Chrome中,即使對於內聯腳本,它也可以在大部分時間內運行)。

我看到您在包含jQuery 1.8之前嘗試使用jQuery。確保在包含jQuery庫之前不要使用jQuery。

在縮小的jQuery 1.8 lib中引發了異常。目前還不清楚究竟是什麼導致jQuery 1.8 lib拋出一個異常,我建議你包含未壓縮的版本,以便你可以看到發生異常的位置。我也看到壓縮版本的jQuery拋出異常,而未壓縮的版本不在Magento中。使用未壓縮的版本可以神奇地「解決」你的問題,但壓縮版本不能正常工作主要是提示jQuery或原型腳本之間的某種衝突。

請確保你不使用擴展也包括jQuery腳本。在一個頁面中的多個jQuery版本可能會導致衝突,這可以通過noconflict來解決。

從我的經驗來看,如果您在head.phtml中爲所有用途包含jquery,並添加jQuery.noconflict()之後那。然後通過佈局xml一次包含所有magento原型腳本,然後添加其他任何jQuery腳本,並確保始終封裝每個jQuery腳本,如下所示。

確保使用$作爲快捷方式每jQuery腳本被封裝這樣的:

jQuery(function($) { 

    //your code using jQuery in $ notation 

    $(document).ready(function() { 
     //code that needs to wait for complete load of DOM 
    }); 
}); 

我的計算器上的第一個答案,希望我能幫助。

+0

感謝您的建議@HGeist –