簡體   English   中英

發送多個內容類型的Ajax

[英]Send multiple content-type Ajax

我使用帶有codeigniter的ajax成功上傳圖像。 但現在我想發送數組,所以我可以在控制器和模型中插入數據。

這是我的代碼,以便更好地解釋:

<form method="POST" id="quiz_file" action="<?php echo site_url('home/upload_quiz/' . $kelas);?>" enctype="multipart/form-data">
<input name="filequiz" id="filequiz" type="file" />
</form>

This is the controller :
function upload_quiz($kelas) 
{
    $temp = explode(".", $_FILES["filequiz"]["name"]);
    $extension = end($temp);
    $new_name = time() . "." . $extension; 
    $config['upload_path']          = './assets/images/quiz_images/';
    $config['allowed_types']        = 'gif|jpg|png|jpeg';
    $config['max_size']             = 2000;
    $config['file_name']            = $new_name;
    $config['max_width']            = 10000;
    $config['max_height']           = 10000;
    $this->load->library('upload', $config);

    $session_data = $this->session->userdata('logged_in');
    $data['user_name'] = $session_data['user_name'];
    $data['kelas'] = $kelas;
    if ( ! $this->upload->do_upload('filequiz'))
    {
        print_r(array('error' => $this->upload->display_errors()));
        $data['error'] = array('error' => $this->upload->display_errors());
        $this->load->view('course', $data);
    }
    else
    {
        $this->load->model('Model');
        $asid = $this->input->post('asid');
        $value = $this->input->post('value');
        $this->Model->inputassignmentscore($asid,$value); <---- The error come from this
        $data['status'] = array('upload_data' => $this->upload->data());
        $quiz_name = $this->input->post('quiz_name');
        if($this->Model->input_quiz($quiz_name,$new_name,$kelas) == TRUE)
        {   
            echo $asid;
            $this->load->view('course', $data);
        }
        elseif($this->Model->input_quiz($quiz_name,$new_name,$kelas) == FALSE)
        {
            $this->load->view('course', $data);
        }
    } 
} 

這是腳本代碼

var cmbvalue = [];
if(asid_quiz.length > 0)
{
    for(i=0;i<asid_quiz.length;i++)
    {
        cmbass = document.getElementsByName('quizcmb')[i].value;
        cmbvalue.push(cmbass);
        console.log('cmbass : ' + cmbvalue);
    }
}

$.ajax({
url: uploadURI,
type: 'post',
data: 
{
    formData : formData,
    asid : asid_quiz,
    value : cmbvalue
},
processData: false,
contentType: false,
beforeSend: function ( xhr ) {
},
success: function(data) 
{
}
});

formData正在正確發送。 但是asidvalue是空的。 所以我無法使用控制器和模型插入數據。 我怎樣才能解決這個問題 ?

如果你想看到這是完整的代碼: 這是我的帖子

當我嘗試使用控制台或警報時,該值存在。

在發送Ajax數據時,您發送(name:string,value:string)對。由於cmbvalue是一個數組,您需要將其轉換為字符串。 可以是數組到CSV或一些可以解析的字符串。 如果cmbvalue = [apple,banana]你可能想把它作為字符串cmbval =“apple,banana”發送,同時在數據中發送它並解析服務器端的csv / string。 在Javascript中,使用toString()將數組轉換為字符串

data: 
{
    formData : formData,
    asid : asid_quiz,
    value:cmbval.toString();
}
var asid_quiz = ['1','2','3'];
var cmbvalue = [];
for(i=0;i<asid_quiz.length;i++)
    {
        cmbass = asid_quiz[i];
        cmbvalue.push(cmbass);
        console.log('cmbass : ' + cmbvalue);
    }
$.ajax({  
    type: 'POST',  
    url: 'test.php', 
    data: { album: 'test',asid:'asid_quiz',value:cmbvalue },

    success: function(response) {
        console.log(response);
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM