如何使用此JSON和jQuery代码传递额外的变量?

时间:2014-07-24 01:56:20

标签: php jquery ajax json

我正在尝试使用jQuery和JSON设置AJAX文件上载脚本。

我对AJAX和jQuery有一些经验,但从未在我的生活中使用过JSON。

在浏览this教程时,我发现他们检索上传文件的方法是从数据库中获取所有文件。

这不符合我目前的需求。这将是将文章写入数据库的表单的一部分,因此脚本只需要与正在创建的文章关联的附件。

我基本上必须为附件会话创建一个数据库表,我用它来确定当前正在使用的附件。

这很好,但是,我现在需要一种方法将会话ID的额外变量传递给jQuery脚本。

我已经在我的PHP脚本中编码了JSON数据,但现在我如何访问jQuery脚本中的某个变量?在下面的代码中,我将指出我编码JSON数据的位置,以及我想在jQuery脚本中添加该数据的地方。

PS:这是在CodeIgniter中。

这是PHP脚本

function upload_file()
{         
    $status = '';
    $msg = '';

    $config = array(
        'upload_path' => FCPATH.'attachments',
        'allowed_types' => 'jpg|gif|png',
        'min_height' => ($this->session->flashdata('img_min_height')) ? $this->session->flashdata('img_min_height') : 0,
        'min_width' => ($this->session->flashdata('img_min_width')) ? $this->session->flashdata('img_min_width') : 0,
        'max_height' => ($this->session->flashdata('img_max_height')) ? $this->session->flashdata('img_max_height') : 0,
        'max_width' => ($this->session->flashdata('img_max_width')) ? $this->session->flashdata('img_max_width') : 0,
        'max_size' => 300,
        'encrypt_name' => TRUE
    );

    $this->load->library('upload', $config);

    if(!$this->upload->do_upload('user_files')){

        $status = 'error';
        $msg = $this->upload->display_errors('', '');

    } else {

        $data = $this->upload->data();
        $this->attachment->create($data);

        if($this->attachment->error == NULL){

            $status = "success";
            $msg = "File uploaded.";
            $session_id = $this->attachment->_session_id;

        } else {

            unlink($data['full_path']);
            $status = "error";
            $msg = $this->attachment->error;
            $session_id = '';

        }

    }

    @unlink($_FILES['user_files']);     

    echo json_encode(array('status' => $status, 'msg' => $msg, 'session_id' => $session_id )); **//I added the session id variable here.**

}

这是获取上传文件的jQuery脚本:

function refresh_files()
{
    $.get('./upload/files/') //The session ID should go at the end of this URL...
    .success(function (data){
        $('#files').html(data);
    });
}

1 个答案:

答案 0 :(得分:0)

您只需在网址旁边添加一个额外的参数。

参考:http://api.jquery.com/jquery.get/

   $.get('./upload/files/', required_data_here)
    .success(function (data){
        $('#files').html(data);
   });

然后在服务器端脚本中:

<?php
  var sess_id = $_GET['your_variable_here'];
?>

以下是参考文献中的一个例子:

$.get( "test.php", { name: "John", time: "2pm" } );