试图在zend框架2中进行典型的ajax调用

时间:2017-05-19 16:28:55

标签: php jquery ajax zend-framework

我被赋予了将文件上传器放入最初在zend框架2中创建的项目的任务。我是初学者。

项目的结构使我感到困惑,因为它不遵循我用来熟悉项目的Zend Skeleton Application的结构。例如。该项目不包含module.config文件。

因此我使用了典型的ajax调用,但是我得到了一个类型EXCEPTION_NO_CONTROLLER错误。我试图找出如何在ZF2中拉出典型的ajax调用。

html和ajax调用是:

<form id="fileupload"  method="POST" enctype="multipart/form-data">

<div class="row">
     <input name="files[]" type="file" multiple/>
</div>

<div class="row">
     <input type="submit" class="btn btn-success" value="Submit"/>
</div>

<div id="content" class="row">
</div>

</form>


<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">

$(document).ready(function(){

     $('#fileupload').on('submit', function(e){

          e.preventDefault();
          $.ajax({
              url: "upload.php",
              type: "POST",
              data: new FormData(this),
              contentType:false,
              processData: false,
              success: function(data, textStatus){

                   $("#content").html("data: " + data + " status: " + textStatus);
              },
              error: function(data,textStatus){

                alert("data: " + data + " status: " + textStatus);              
              }
          });
      });

});

</script>

在cupload.php我有:

<?php 

$options = array(
    'db_host' => 'hostname',
    'db_user' => 'username',
    'db_pass' => 'password',
    'db_name' => 'dbname',
    'db_table' => 'dbtable'
);

if (is_array($_FILES) ){
    // MYSQL and PHP logic goes here    
}

1 个答案:

答案 0 :(得分:0)

从概念上讲,您的前端jQuery代码向后端PHP代码发出请求。在ZF2应用程序中,此类请求通过路由,控制器和操作进行处理。

所以,你需要:

  • 添加将处理上传的路线。这将定义客户端代码(您的jQuery)必须向其发出请求的URL与将处理请求并返回响应的后端控制器/操作之间的映射

  • 实施路线

  • 中定义的控制器和动作
  • 修改前端代码以使用路由

  • 表示的网址

不同的ZF2设置以不同的方式实现前两个步骤 - 路由和控制器/操作 - 但通常它在现有模块或甚至新模块中定义。这些事情的标准设置在ZF2 docs

中描述