在我的网站中,用户可以选择汽车品牌,该品牌的型号以及该型号的引擎。最终,在这些选择之后出现年份标签并且用户选择一年,以便他/她可以看到该车的规格。但是,当我点击其中一个年份标签"试图获得非对象的属性"出现错误。
它在car_model.php line 53
(第53行是返回行),
function getEngineId($engine){
$this->db->where("engine",$engine);
$query = $this->db->get("car_engine");
$eId = $query->row();
return $eId->id;
}
这是填充标签和内容(规格)的方式。
public function populateTabs(){
$this->load->model("car_model");
$id = $this->input->post("id");
$year = $this->input->post("year");
$engine = $this->input->post("engine");
if(isset($id, $year, $engine)){
$eId = $this->car_model->getEngineId($engine);
$years = $this->car_model->getYears($eId);
$this->load->library("car");
$car = new Car($id,$year);
echo "<ul class='nav nav-tabs' id='yearTabs'>";
foreach ($years->result() as $row){
echo "<li class='first'><a href='#$id-$row->year' data-toggle='tab'>".$row->year."</a></li>";
}
echo "</ul>";
echo "<div class='tab-content'>";
foreach ($years->result() as $row){
echo "<div class='tab-pane fade in first' id='$id-$row->year'>";
...Irrevelant echo part...
}
}
更新:我eId
检查了var_dump()
,它回应了我想要的内容。如果它返回false(显然是),则不应该打印{#1}}&#34; false&#34;?
更新2 :点击年份标签之前没有错误。
这里打印选定的汽车名称(标题)及其年份javascript。
var_dump()
这是在选择一年javascript后
$(document).ready(function(){
var brand = "";
var model = "";
var engine = "";
var bc = 0;
var mc = 0;
var title = document.getElementById("title");
$(".brand a").live('click',function(){
brand = $(this).text();
bc++;
if(bc > 1){
$(".mtr").collapse("hide");
}
});
$(".model a").live('click',function(){
model = $(this).text();
mc++;
if(mc > 1){
$(".mtr").not("#"+model+"Motors").collapse("hide");
}
});
$(".engine a").live('click',function(){
var id = $(this).attr("id");
engine = $(this).text();
$.ajax({
type: "post",
url: "populateTabs",
data: "id=" + id + "&engine=" +engine,
success: function(data){
$("#tabs").html(data);
}
});
if(brand == 'Bmw'){
$(title).html(brand + " " + model + engine);
}
else{
$(title).html(brand + " " + model+ " " + engine);
}
});
});
答案 0 :(得分:2)
您没有正确处理错误。您希望$eId
成为$query->row()
返回的对象,但如果它失败了怎么办? $eId
是NULL
或布尔FALSE
,您正在尝试从中读取属性。
答案 1 :(得分:0)
$eId
可能是false
或null
,因为$query->row();
失败了。检查您的返回值。
答案 2 :(得分:0)
似乎您没有从查询中获得结果。
来自CI doc。
测试结果
如果您运行的查询可能不会产生结果,我们鼓励您 首先使用num_rows()函数测试结果:
尝试:
if ($query->num_rows() > 0)
{
$eId = $query->row();
return $eId->id;
} else
{
return false;//or something you can validate in your controller.
}