发送ajax调用到YII中的函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了发送ajax调用到YII中的函数相关的知识,希望对你有一定的参考价值。

我需要在以下目录结构中向函数发送ajax调用

Yii::$app->request->absoluteUrl."protected/humhub/modules/post/controllers/PostController/UploadMusicFile";

我的观点功能

  function uploadImage(){
      var url = '<?php echo Yii::app()->request->baseUrl."protected/humhub/modules/post/controllers/PostController/UploadMusicFile"; ?>';
      console.log(url);
      return false;
        $.ajax({
          url:'<?php echo Yii::$app->createUrl("Post/UploadMusicFile"); ?>',
          method:'post',
          data:{file:$('input[type="file"]')},
          dataType:'',
          contentType:false,
          processData:false,
          success:function(data){
            var parsed_data = $.parseJSON(data);
          },
          error:function(data){
            console.log("Error "+data);
          }
        });

    }

我要发布的功能

  public function UploadMusicFile(){
      $file = Yii::$app->request->post('file');
      echo "<pre>";
      print_r($file);
      echo "</pre>";
      exit();
      $target_dir = "/home/jmwglobaladmin/public_html/melmory/uploads/music_memory/";
      $target_file = $target_dir . basename($_FILES["files"]["name"][0]);
      foreach ($_FILES["files"]["error"] as $key => $error) {
          if ($error == UPLOAD_ERR_OK) {
              $tmp_name = $_FILES["files"]["tmp_name"][$key];
              move_uploaded_file($tmp_name, $target_file);
              $connection = Yii::$app->getDb();
              $command = $connection->createCommand('select id from post order by id desc limit 1');
              $result = $command->queryAll();
              $new_id = $result[0]['id']+1;
              $file_name = "abc.mp3";
              $connection = Yii::$app->getDb();
              $command_insert = $connection->createCommand('insert into memory_music (post_id,memory_music) values ("'.$new_id.'","'.$file_name.'")');
              $result = $command_insert->execute();
          }
      }
    }

我得到404的错误。如何将yii中的正确url传递给目录结构中存在的函数,如上所述?

答案

基本。你的功能不是动作。

改变这个:

public function UploadMusicFile()

对此:

public function actionUploadMusicFile()

以上是关于发送ajax调用到YII中的函数的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从回收器适配器发送到片段 |如何从 recyclerview 适配器调用片段函数

在 Yii2 Kartik Select2 小部件中,如何对选择事件进行 ajax 调用?

通过 Yii2 中的链接使用 AJAX 提交时的 CSRF 问题

将数据从 javascript forEach 循环中的 php 数组发送到 ajax 调用的 url

将空参数从 Ajax 发送到控制器

如何将数据从ajax get方法发送到laravel中的控制器?