使用jquery .load()函数将数组传递给控制器

时间:2015-06-21 02:10:26

标签: jquery codeigniter

我正在尝试使用jquery .load()函数将数组传递给我的CI控制器,但是我收到了这个错误:

A PHP Error was encountered

Severity: Warning

Message: Missing argument 1 for QuestionQueue::update()

Filename: controllers/QuestionQueue.php

Line Number: 27

Backtrace:

File: D:\software\wamp\www\Quiz\application\controllers\QuestionQueue.php
Line: 27
Function: _error_handler

File: D:\software\wamp\www\Quiz\index.php
Line: 292
Function: require_once

我的观看代码:

$(".sortable").sortable({connectWith: '.js-connected'}).bind('sortupdate', function(e, ui) {
      var roundSize = document.getElementById("roundqs").getElementsByTagName("li").length;
      var data = new Array();
      for (i = 0; i < roundSize; i++) {
        data[i] = $('#roundqs li')[i].id;
      }

        var p = {};
        p['rId'] = <?php echo $roundRow->roundId; ?>;
        p['questions'] = data;


        $(this).load("http://<?php echo base_url();?>questionQueue/update/",p);



    });

我的控制器代码:

public function update($data)
{
    $questionArray = $data->questions;
    $rId = $data->rId;
    $this->load->model('QuestionQueueModel');
    for ($i=0;$i<$questionArray.length;$i++){
        $this->QuestionQueueModel->updateOrAddQuestionInQueue($questionArray[$i],$rId,$i + 1);
    }
}

我对这个CodeIgniter框架很新,所以它可能是一个愚蠢的错误,但我似乎无法找到它。

任何人都知道造成这种情况的原因是什么?

1 个答案:

答案 0 :(得分:0)

似乎您尝试传递给控制器​​函数update()的数据未被发送,因此缺少参数消息。

为什么不尝试使用ajax调用来将数据发送到控制器....

像这样:

 $.ajax({
        dataType: "json",
        data: {
            'data' : p,
        },              
        url : 'questionQueue/update',
        success : function (data) {
            // do success handling
        },
        error : function (jqXHR, textStatus) {
            // do error handling
        },
    });

您可能需要将ajax URL更改为系统所需的URL,在我的CI中已经设置了基本URL,因此我只需调用控制器然后调用该函数。