2012-02-08 7 views
8

Khi tôi nhấp vào nút, cảnh báo sẽ không được thực hiện. Tôi đang làm gì sai? Có lẽ tôi cần bao gồm một số tệp js trong phần tiêu đề của mình?Tắt cảnh báo trên nút bấm

Dưới đây là hình thức đăng nhập quan điểm của tôi:

<?php echo CHtml::beginForm(); ?> 

<div class="row"> 
<?php echo CHtml::label('username', 'username'); ?> 
<?php echo CHtml::textField('username'); ?> 
</div> 
<div class="row"> 
<?php echo CHtml::label('password', 'password'); ?> 
<?php echo CHtml::textField('password'); ?> 
</div> 
<?php 
echo CHtml::ajaxButton('sign in', array('site/login'),array(
     'type'=>'POST', 
     'update'=>'#mydiv', 
     'beforeSend' => 'function(){ 
      alert("beforeSend"); 
     }', 
     'complete' => 'function(){ 
      alert("complete"); 
      }', 

)); 
?> 
<?php echo CHtml::endForm(); ?> 
<div id="mydiv" style="color:white;">...</div> 

Đây là mã của tôi trong bộ điều khiển:

public function actionLogin() 
{ 
    $this->renderPartial('//blocks/user_info'); 
} 

user_info chỉ vang some text

+0

mã hoạt động tốt, tôi có nghĩa cảnh báo đang hiển thị , vì vậy có thể có một số lỗi khác trong tệp xem, đây có phải là toàn bộ tệp xem không? Nếu không, hãy đặt toàn bộ mã tệp xem đăng nhập vào câu hỏi của bạn và cũng có thể chế độ xem này được hiển thị một phần hay không? –

Trả lời

6

Không chắc chắn đây có phải là vấn đề của bạn hay không, nhưng renderPartial() không hoạt động tốt với AJAX. Đó là một vấn đề Yii biết:

http://www.yiiframework.com/forum/index.php/topic/24699-yii-20-ajaxrenderpartial-conflict/ http://www.yiiframework.com/forum/index.php?/topic/10427-ajax-clientscript

Tôi chạy vào vấn đề khi tôi cố gắng tải biểu mẫu qua AJAX, sau đó gửi lại bằng CHtml :: ajaxSubmitButton.

1

Liệu beforeSend làm việc? Nếu bạn thử "thành công" thay vì "hoàn thành" thì sao?

+0

Không, nó không. Tôi đã thử rất nhiều thứ nhưng tôi không thể làm cho nó hoạt động được. biểu mẫu đang được gửi và đó là tất cả. –

1

Tôi cũng gặp sự cố này (lỗi?). Hãy thử thay đổi 'beforeSend' và callbacks khác trong quan điểm này:

'beforeSend':'js:alert("complete");' 

không có "function() {}" và với "js".

P.S. Xin lỗi, tiếng Anh của tôi là xấu (

+0

Nên cũng có thể với chức năng, nhưng tôi nghĩ cũng "js:" là con đường để đi. – schmunk

3

thử này

this->renderPartial('//blocks/user_info','', false, true);

3

trong mã của tôi nó hoạt động thử này

<?php 
echo CHtml::ajaxSubmitButton('Save','your-url',array(
    'type'=>'POST', 
    'dataType'=>'json', 
    'success'=>'js:function(data){ 
     if(data.result==="success"){ 
      // do something on success, like redirect 
     }else{ 
     $("#some-container").html(data.msg); 
     } 
    }', 
)); 
?> 
+0

Sẽ tốt hơn nếu bạn cũng giải thích mã bạn đăng. –

+0

làm thế nào để bạn vượt qua các dữ liệu – shorif2000

1

Đây là ví dụ đơn giản của Yii Ajax nút Submit:

<?php 
echo CHtml::ajaxSubmitButton(
'Submit', 
'your-url', 
array(
    'type'=>'POST', 
    'dataType'=>'json', 
    'success'=>'js:function(data){ 
     if(data.result==="success"){ 
      // do something on success, like redirect 
     }else{ 
     $("#some-container").html(data.msg); 
     } 
    }', 
) 
); 
?> 

Thêm chi tiết tại http://www.codexamples.com/90/chtml-ajaxsubmitbutton/

0

nút Ajax nộp theo quan điểm:

echo CHtml::ajaxSubmitButton('Save', array('/controller/action/id/' .  $id), array(
       'type' => 'post', 
       'dataType' => 'json', 
       'update' => '#mydiv', 
       'beforeSend' => 'function(){}', 
       'complete' => 'function(){}', 
       'success' => 'js:function(data){ 
        if(data.status=="1"){ 
         html = "<div class=\"alert in alert-block fade alert-success\"><a class=\"close\" data-dismiss=\"alert\">x</a>"+data.msg+"</div>"; 
         $("#status-msg").html(html); 

         }else{ 
         html = "<div class=\"alert in alert-block fade alert-error\"><a class=\"close\" data-dismiss=\"alert\">x</a>"+data.msg+"</div>"; 
         $("#status-msg").html(html); 
         } 
        }', 
        ), array('class' => "btn btn-primary") 
      ); 

Trong điều khiển hành động:

 $return = array(); 
     $return['status'] = '1'; 
     $return['msg'] = 'Record Updated Successfully'; 

     echo CJSON::encode($return); 
     Yii::app()->end(); 

Thay đổi mảng trở lại theo yêu cầu.

0

Bạn phải đặt tham số thứ tư của hàm renderPartial thành true, do đó Yii sẽ bao gồm các tệp JS cần thiết cho hoạt động đúng của chế độ xem.

$this->renderPartial('_form',array('model'=>$model), false, true); 
0

Trong các chức năng điều khiển bạn cần phải gửi thêm 3 thông số (tổng cộng 4 thông số)

chức năng của bạn sẽ như thế này

public function actionLogin() 
{ 
    this->renderPartial('//blocks/user_info','',false,true); 
} 
+0

Tôi hy vọng nó sẽ cung cấp cho bạn giải pháp chính xác của vấn đề của bạn. –