2013-10-17 19 views
0

我正在使用Yii創建我的網頁。當我創建的頁面,創建的Yii比下非常相似的一種形式:我無法重新加載我的聯繫表格的驗證碼

<?php 
/* @var $this SiteController */ 
/* @var $model ContactForm */ 
/* @var $form CActiveForm */ 

$this->pageTitle=Yii::app()->name . ' - Contact'; 
$this->breadcrumbs=array(
'Contact', 
); 
?> 

<?php if(Yii::app()->user->hasFlash('contact')): ?> 

<div class="flash-success"> 
    <?php echo Yii::app()->user->getFlash('contact'); ?> 
</div> 

<?php else: ?> 

<div class="form"> 

<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'contact-form', 
'enableClientValidation'=>true, 
'clientOptions'=>array(
    'validateOnSubmit'=>true, 
), 
)); ?> 

<p class="note"><?php echo Yii::t('app','Fields with');?> <span class="required">*</span> <?php echo Yii::t('app','are required.');?></p> 

<?php echo $form->errorSummary($model); ?> 

<div class="row"> 
    <?php echo $form->labelEx($model,'name'); ?> 
    <?php echo $form->textField($model,'name'); ?> 
    <?php echo $form->error($model,'name'); ?> 
</div> 

<div class="row"> 
    <?php echo $form->labelEx($model,'email'); ?> 
    <?php echo $form->textField($model,'email'); ?> 
    <?php echo $form->error($model,'email'); ?> 
</div> 

<div class="row"> 
    <?php echo $form->labelEx($model,'subject'); ?> 
    <?php echo $form->textField($model,'subject',array('size'=>60,'maxlength'=>128)); ?> 
    <?php echo $form->error($model,'subject'); ?> 
</div> 

<div class="row"> 
    <?php echo $form->labelEx($model,'body'); ?> 
    <?php echo $form->textArea($model,'body',array('rows'=>6, 'cols'=>50)); ?> 
    <?php echo $form->error($model,'body'); ?> 
</div> 

<?php if(CCaptcha::checkRequirements()): ?> 
<div class="row"> 
    <?php echo $form->labelEx($model,'verifyCode'); ?> 
    <div> 
    <?php $this->widget('CCaptcha'); ?> 
    <?php echo $form->textField($model,'verifyCode'); ?> 
    </div> 
    <div class="hint"><?php echo Yii::t('app','Please enter the letters as they are shown in the image above.');?> 
    <br/><?php echo Yii::t('app','Letters are not case-sensitive.');?></div> 
    <?php echo $form->error($model,'verifyCode'); ?> 
</div> 
<?php endif; ?> 

<div class="row buttons"> 
    <?php echo CHtml::submitButton('Submit'); ?> 
</div> 

<?php $this->endWidget(); ?> 

</div><!-- form --> 

<?php endif; ?> 

在開始時,這種形式的工作,但在那之後,我提高了網頁加入更多功能。幾分鐘前,我正在檢查所有頁面,並看到重新加載的captcha按鈕不起作用。現在,當我嘗試重新加載驗證碼,網頁被重新加載並使用此代碼顯示一個空白頁面:

{"hash1":774,"hash2":774,"url":"\/MyApp\/site\/captcha.html?v=526045d3d1187"} 

我試圖尋找在谷歌的一些類似的錯誤,但我沒有發現任何東西。說實話,我不明白髮生了什麼事。我想我在我的網頁的另一個文件中添加的代碼會產生這個錯誤,但我沒有任何想法......我不明白這個代碼是什麼意思。

請,我需要你的幫助!

有人可以幫助我嗎?感謝

編輯:

如果我期待我的瀏覽器網頁的源代碼,我搜索「captcha.html」,我可以看到下面的代碼:

<script type="text/javascript"> 
/*<![CDATA[*/ 
jQuery(function($) { 
jQuery('#yw0').after("<a id=\"yw0_button\" href=\"\/MyApp\/site\/captcha.html?refresh=1 \">Obtenga un nuevo c\u00f3digo<\/a>"); 
jQuery(document).on('click', '#yw0_button', function(){ 
jQuery.ajax({ 
    url: "\/MyApp\/site\/captcha.html?refresh=1", 
    dataType: 'json', 
    cache: false, 
    success: function(data) { 
     jQuery('#yw0').attr('src', data['url']); 
     jQuery('body').data('captcha.hash', [data['hash1'], data['hash2']]); 
    } 
}); 
return false; 
}); 

但我沒有找到在任何地方captcha.html ...

編輯2: 我發現這個問題。我在我的wep頁面的主頁末尾添加了javascript代碼。我加了這個:

<script type="text/javascript" src="<?php echo Yii::app()->theme->baseUrl; ?>/scripts/jquery-1.4.1.min.js"></script> 
<script type="text/javascript" src="<?php echo Yii::app()->theme->baseUrl; ?>/scripts/jquery-ui-1.8.12.custom.min.js"></script> 
<script type="text/javascript" src="<?php echo Yii::app()->theme->baseUrl; ?>/scripts/jquery-photostack.js"></script> 
<script type="text/javascript" src="<?php echo Yii::app()->theme->baseUrl; ?>/scripts/jquery-coin-slider.min.js"></script> 

如果我刪除這段代碼,驗證碼可以正確地重新加載。請有人能告訴我我在這裏做得不好嗎?爲什麼我的JavaScript代碼產生這個?我該如何解決它?

+0

讓人想到的食物:「總是使用作品的增量副本」,這樣你就可以恢復過去曾經工作過的東西。現在,我注意到'captcha.html' - 如果該文件中有任何PHP,並且您沒有正確設置Apache將'.html'作爲PHP?如果是這種情況,那麼這將停止它的軌道。 –

+0

感謝Fredd-ii-,我不知道文件captcha.html在哪裏,我試圖找到它,但我不能....所以我確信我沒有在那裏引入任何PHP代碼.. 。當我做出改變時,我總是嘗試修改所有內容,但是要告訴你事實,我沒有修改這個按鈕,現在我不知道這是什麼問題... –

+0

不客氣。那麼試試看看你能否找到它。這是非常奇怪的,由「Yii」創造,但沒有保存在任何地方。 –

回答

0

的問題是在CCaptcha Yii的部件this code

jQuery(document).on('click', '$selector', function(){ 
    jQuery.ajax({ 
    ... 
    }); 
    return false; 
}); 

的點擊監聽器是元素本身,而不是對文件。在此代碼之後添加腳本標記時,會加載一個新的jQuery版本,該版本將清除init上的所有這些偵聽器。

要解決這個問題,只能使用一個jQuery版本,最好是Yii包含一個。

如果您確實想要替換它,請按照正確的方式在CClientScript->scriptMap的config中將值jquery.jsjquery.min.js鍵設置爲jQuery的新URL。