我需要使用Ajax jQuery发布变量并在Codeigniter中获取结果。
虽然我的数据库有内容,但代码仍然返回空数组。 - array(0){}。 问题是变量没有从表单中发布。这是我的代码:
表格代码 - 查看:
<form id = "myform1" onsubmit="return false">
<select name="field_country">
<option value="0">Argentina</option>
<option value="1">Chile</option>
</select>
</form>
Javascript - 在视图中内嵌:
jQuery(document).ready(function($){
$("select[name='field_country']").change(function(){
var country_name= $("select[name='field_country'] option:selected").text();
$.post("<?= base_url(); ?>index.php/catalog/getCities/", {country:country_name}, function(data){
alert(data);
})
})
})
catalog.php控制器 - 功能:
function getCities(){
$country_name = $this->input->post('country', 'Argentina');
$result = $this->catalog_model->getCitiesNames($country_name);
var_dump($result);
}
catalog_model模型功能:
function getCitiesNames($country_name) {
$cities=array();
$result = $this->db->query("SELECT title FROM cities WHERE country = '".$country_name."'");
foreach ($result->result() as $row) {
array_push($cities, $row->title);
}
return $cities;
}
答案 0 :(得分:2)
您需要对Javascript和Controller代码进行少量修改。为了让Javascript和PHP在彼此之间进行通信,您必须告诉两段代码您使用什么格式来传输信息。最简单和最常见的格式是JSON。因此,您需要修改代码以发送和接收JSON。
表格视图
<form id="myform1" onsubmit="return false">
<select id='country' name="field_country">
<option value="0">Argentina</option>
<option value="1">Chile</option>
</select>
</form>
我已为id='country'
添加了select
,以便更轻松地覆盖。
<强> JAVASCRIPT 强>
$(document).ready(function(){
// When the SELECT is changed
$("#myform1 #country").change(function(){
var country_name= $(this).find("option:selected").text();
$.post ( "<?= base_url(); ?>index.php/catalog/getCities/",
{ country:country_name },
function(data){
...on success do something here
},
'json'
);
});
});
你需要告诉Javascript你期待一个JSON
对象。
<强> CONTROLLER 强>
function getCities(){
$country_name = $this->input->post('country');
$result = $this->catalog_model->getCitiesNames($country_name);
echo json_encode($result);
}
您的PHP代码应该返回一个JSON对象。
答案 1 :(得分:0)
jQuery(document).ready(function($){
$("select[name='field_country']").change(function(){
var country_name= $("select[name='field_country'] option:selected").text();
$.ajax({
type: "POST",
url: "<?= base_url(); ?>index.php/catalog/getCities/",
data: "country="+country_name,
success: function(data){
alert(data);
}
});
});
});