2016-05-31 55 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

我想我已经解决了这个问题。 –