Я наследую чужой проект и пытаюсь с ним ознакомиться.У меня мало опыта с КИ.
В одном из представлений есть раскрывающаяся форма, при изменении вызывает функцию JS:
$(document).ready(function()
{
// admin contorller drop down ajax
$("#catagoryDropDownList").change(function()
{
getCatagoriesItems();
});
// initiate table sort
TableSorter.prepareTable($("#dataResultsTable"));
});
// ajax request triggered by catagory drop down menu selection
function getCatagoriesItems()
{
blockPage();
// get base url of current site
var baseurl = $("#site_url_for_ajax").val();
// get adminType
var adminType = $("#admin_type").val();
// get catagory id
var catId = $("#catagoryDropDownList option:selected").attr("id");
var queryString = baseurl + "home/ajaxCatagorySelection/" + catId + "/" + adminType;
$.get(queryString, function(data)
{
var obj = jQuery.parseJSON(data);
// dump data into table when request is successful
$("#dataResultsTable tbody").html(JSONParser.parseHomeDropDownSelectedJSON(obj));
// unblock page when done
$.unblockUI();
});
}
Я зарегистрировал два значения, catID и adminType, они обацелые числа, catID будет между 1-10 и adminType = 1. Там обе ссылки на значения int в базе данных.catID ссылается на поле с названием «categoryID».catID 6 = все.Ни одна из записей в базе данных не имеет 6 в качестве значения, таким образом, гарантируя, что если вы отфильтровали, что не равно 6, вы получите все.Они передаются функции ajaxCatagorySelection в файле контроллера home.php.Все идет нормально.Вот эта функция:
public function ajaxCatagorySelection($tableName, $id)
{
$vars = new DatabaseRetriever($id);
$resultsArray = $vars->getDataForSpecifiedTable($tableName, $id);
echo json_encode($resultsArray);
}
, и сама эта функция ссылается на модель (database_retriever.php) и класс DatabaseRetriever, и я предполагаю передачу переменных в функцию getDataForSpecifiedTable.Я говорю, предполагая, потому что имена переменных значительно изменились с catID на $ tableName и adminType на $ id.Вот getDataForSpecifiedTable:
public function getDataForSpecifiedTable($catagoryInfo, $databaseID)
{
// connect to database
$sql = $this->connect($databaseID);
if ($catagoryInfo != 6) {
// build SQL Query and query the database
$result = $sql->query("SELECT fileId, fileTitle, filePath, fileTypeExt, fileDescription, fileModed from admin_files where catagoryId = '" . $catagoryInfo . "' and adminId = '" . $databaseID . "'");
} else {
$result = $sql->query("SELECT fileId, fileTitle, filePath, fileTypeExt, fileDescription, fileModed from admin_files where catagoryId = '" . $catagoryInfo . "' and adminId = '" . $databaseID . "'");
}
// declare array
$items = array();
// retriever rows from database and build array
while ($row = $result->fetch_row())
{
array_push($items, $row);
}
// disconnect from database
$this->disconnect();
// return data in array
return $items;
}
имена переменных снова изменились, но вы можете сказать, что они должны делать то, что я написал выше, посмотрев на запрос.Здесь проблема.Я добавил условное выражение «if ($ catagoryInfo! = 6) ...», если я не добавлю туда else, то CI выдает ошибки предупреждения, что данные не возвращаются.Я возвращаю $ categoryInfo и в консоли FireBug получаю правильное целое число.Я пробовал условное выражение как целое число и строку с ошибками.Есть идеи, что здесь может происходить?