2012-05-29 53 views
2

我正在使用Yii Framework v1.1.10r3566。我注意到Firebug中生成的代碼產生錯誤。它說「jQuery沒有定義」,該行有一個函數「jQuery(function($)」),它發生在多個頁面上,我相信它會阻止我的zii小部件正常工作(CJuiDatePicker在以前不工作。工作過),我不上生成錯誤的一個頁面寫使用jQuery的任何程序我也沒有包括任何其他的JavaScript庫生成的代碼是:Firebug錯誤:jQuery沒有定義 - 在yii應用程序中

<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta name="language" content="en" /> 
<!-- blueprint CSS framework --> 
<link rel="stylesheet" type="text/css" href="/myapp/css/screen.css" media="screen, projection" /> 
<link rel="stylesheet" type="text/css" href="/myapp/css/print.css" media="print" /> 
<!--[if lt IE 8]> 
<link rel="stylesheet" type="text/css" href="/myapp/css/ie.css" media="screen, projection" /> 
<![endif]--> 
<link rel="stylesheet" type="text/css" href="/myapp/css/main.css" /> 
<link rel="stylesheet" type="text/css" href="/myapp/css/form.css" /> 
<script type="text/javascript" src="/myapp/assets/ef86d901/jquery.js"></script> 
<script type="text/javascript" src="/myapp/assets/ef86d901/jquery.yiiactiveform.js"></script> 
<title>myapp - Login</title> 
</head> 

我在無計可施和不知道爲什麼生成的代碼產生這個錯誤。幫助將不勝感激。

+0

刪除資產文件夾中的所有內容並進行刷新。 –

+0

@MukeshSoni,他的**資產**文件夾不是一個* cached *文件夾,而是一個包含**源**文件的文件夾。 – arttronics

+3

Yii在資產文件夾中查找文件。如果找不到,它們會被重新生成。除了輕微的時間延遲以外,刪除它們完全沒有問題。 –

回答

3

該錯誤通常是jQuery框架沒有安裝的結果。看起來像你的jquery.js是你的jQuery框架,因爲你提到你自己不使用任何自定義標記。

簡單的測試是更換這樣的:

<script type="text/javascript" src="/myapp/assets/ef86d901/jquery.js"></script> 

有了這個:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 

注意與您需要的jQuery的版本替換1.7.2通過使用谷歌解釋的掛燙機API Libraries

是否能解決您的問題,然後檢查路徑到當地的jQuery文件或考慮使用谷歌的API盜鏈Libaries其中有可以read about其他好處。

+0

非常感謝!這似乎解決了這個問題。儘管如此,我不知道Yii該怎麼做。另外,我現在收到$(「#profile-form」)。yiiactiveform不是函數。我是否還需要更換其他庫? – nimble

+0

它看起來像** Yii Framework v1.1.10r3566 **也沒有安裝。您將需要檢查文件夾路徑並重新下載它。另外,我對該腳本不熟悉,但可能缺少它,應放在您正在使用的** Yii **表單上方。由於此問題已修復,請接受我的回答。謝謝! – arttronics

2

您應該包括jQuery的所有控制器/動作,要做到這一點,插入此代碼Controller.php這樣(在應用程序中所有控制器的最父)

public function beforeAction($action) 
    { 

     $cs = Yii::app()->clientScript; 
     $cs->registerCoreScript('jquery'); 

    } 
0

我只是有一個類似的問題,在我'將組件 - > assetManager - > linkAssets設置爲true以確保正在使用「最新」版本的資產。然後我忘記了,並且擦去了我的資產文件夾,它刪除了所有原始資產!

不用說,我能夠恢復原始文件(版本控制ftw),並且全部恢復。在類似的困境中可能對其他人有用。

1

我有同樣的問題,然後我看着「View Source」,那裏,jquery是從資產和「js」目錄加載的。所以我刪除了registerScriptFile('js/jquery');。然後它工作正常,因爲它只從資產中加載jquery

相關問題