array_key_exists()期望参数2为数组,给定null

时间:2014-02-21 08:40:47

标签: javascript php jquery ajax

我在名为loadNotes

的控制器中有一个函数edit_flow.php
function loadNotes_get() {
   $object = json_decode($this->input->post("inputJson"), true);
   if (array_key_exists('subject_id', $object) && array_key_exists('teacher_id', $object))
   {
       $this->response($object);
   }
}

我在渲染页面时调用上面的函数。

我的JavaScript

$(document).ready(function() {
   loadNotes();
});

function loadNotes() {
   var data = '{"subject_id":'+subject_id+',"teacher_id":'+teacher_id+'}';
   ajaxRequest(data, 'loadNotes', 'GET');   // GET request on loadNotes
}

JavaScript函数ajaxRequest的代码是:

function ajaxRequest(datum, method_url, request_type) {
   var eurl = "<?php echo base_url(); ?>edit_flow/" + method_url;
   var params = 'inputJson=' + datum; 

   var request = $.ajax({
       type: request_type,
       url: eurl,
       data: params,
       success: function(result) {
          console.log('result: '+result);
          console.log('data: '+params);
       },
       async: false
   });

   return request.responseText;
}

ajaxRequest功能的控制台输出:

result: <div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>
<p>Message:  array_key_exists() expects parameter 2 to be array, null given</p>
<p>Filename: controllers/edit_flow.php</p>
<p>Line Number: 126</p>

</div>
data: inputJson={"subject_id":1234,"teacher_id":111}

问题指向控制器edit_flow.php,但即使在调试它之后似乎也无法解决此问题。控制台输出错误而不是object本身。

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

试试这个

function loadNotes_get() {
   $object = json_decode($this->input->get("inputJson"), true);
   if (array_key_exists('subject_id', $object) && array_key_exists('teacher_id', $object))
   {
       $this->response($object);
   }
}

或者将JS改为POST而不是GET

function loadNotes() {
   var data = '{"subject_id":'+subject_id+',"teacher_id":'+teacher_id+'}';
   ajaxRequest(data, 'loadNotes', 'POST');   // POST request on loadNotes
}

答案 1 :(得分:-1)

检查第二个参数是否为数组。 你必须将数组传递给方法array_key_exists()

的第二个参数

方法的参数:

键 值得检查。 排列 带有要检查的键的数组。