2016-05-31 61 views
-1

我在Yii2開發了我的應用程序。我用kartik ajax文件上傳。當我們點擊Kartik的上傳按鈕時,它發送一個Ajax請求,在那個請求中它發送文件上傳到服務器。如何在調用ajax請求時捕獲事件?

我想在ajax請求開始之前捕獲某個特定表單的事件。

這是PHP代碼:

use kartik\widgets\FileInput; 
<?php $form = ActiveForm::begin(['id' => 'login-form','options' => [ 
    'class'=> "form-photo" 
    ]]); ?> 
<?php 
    echo $form->field($model, 'photo')->widget(FileInput::classname(), [ 
     'options' => ['accept' => 'image/*'], 
     'pluginOptions' => [ 
      'uploadUrl' => Url::to(['/site/photo-upload']), 
     ] 
    ]); 
?> 
<?php ActiveForm::end(); ?> 

當我們選擇在這個插件文件並點擊上傳按鈕發送Ajax請求,我想查什麼呢爲此請求服務器響應。

在此先感謝!

+6

請張貼您的相關代碼。 – Marcus

+1

我已發佈我的代碼 –

+0

您希望捕獲什麼*事件? – Marcus

回答

0

添加按鈕的onclick處理程序。既然你使用的是框架,並沒有發佈你的前端代碼,我不能告訴你如何選擇你的目標按鈕。

// remove default behavior 
$(button).off("click"); 
$(button).click(function(e){ 
    // prevent form from submitting 
    e.preventDefault(); 

    // do stuff 

    // perform ajax 
    $.ajax({ 
    url: /*add your target file here */, 
    type: 'post', 
    data: { 
      /* add your json object here */ 
      }, 
    success: function(data, status) { 
     data = JSON.parse(data); 

    }, error: function(xhr, desc, err) { 
     console.log(xhr); 
     console.log("Details: " + desc + "\nError:" + err); 
    }, complete: function(){  
    } 
}); // end ajax call 
}); 
+0

是的,它會工作,我認爲.... –

+0

但他的意思是在ajax請求運行之前,他想捕獲該事件。 –

+1

我想我已經解決了這個問題。 –