我正在尝试使用AJAX & JQUERY
我有一个bootstrap下拉列表,其中我显示了数据库中的一些值。 我想将我选择的项目作为POST传递给我的PHP。
我的下拉列表是这样的:
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Your Sites <span class="caret"></span></a>
<ul class="dropdown-menu">
<?php
foreach($sites as $site)
{
echo "<li class='specialLink' id='".$site->site_key."'><a href='#'>".$site->site_key."</a></li>";
}
?>
</ul>
</li>
现在我的问题是,当我在PHP中回显POST值时,我什么也得不到,而如果我从ajax提醒数据,那么它会显示正确的值。
此外,如果我打开浏览器控制台,可以看到我在网络 - > XHR 标签中选择的值。
<script type="text/javascript">
$( ".specialLink" ).click(function() {
var site = this.id;
console.log(site);
var url= "<?php echo base_url('customer/dashboard/index') ?>";
//get value for throw to controller
$.ajax({
type: "POST", //send with post
url: "<?php echo base_url('customer/dashboard/index') ?>",
data: {site:site},
success:function(data){
},
});
});
尝试在PHP中获取这样的值:
if(!empty($_POST))
{
//$site = $_POST['site'];
echo $this->input->post('site');
//$this->session->set_userdata('site', $site);
}
Request URL:http://127.0.0.1/bizrtc/customer/dashboard/index
Request Method:POST
Status Code:200 OK
Form Data
view source
view URL encoded
site:HT45-YT6T
答案 0 :(得分:2)
尝试更改下拉代码,看看它是否有效:
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Your Sites <span class="caret"></span></a>
<ul class="dropdown-menu">
<?php
foreach($sites as $site)
{
echo "<li class='specialLink' data-id='".$site->site_key."' id='".$site->site_key."'><a href='#'>".$site->site_key."</a></li>";
}
?>
</ul>
</li>
你的JS代码:
<script type="text/javascript">
$( ".specialLink" ).click(function() {
// var site = this.id;
var site = $(this).attr('data-id').val;
console.log(site);
var url= "<?php echo base_url('customer/dashboard/index') ?>";
//get value for throw to controller
$.ajax({
type: "POST", //send with post
url: "<?php echo base_url('customer/dashboard/index') ?>",
data: {site:site},
success:function(data){
},
});
});
答案 1 :(得分:1)
尝试创建一个简单的div:
<div id="test"></div>
做一个echo json_encode
if($_REQUEST['function'] == 'function_site')
{
$site = $_POST['site'];
//$this->session->set_userdata('site', $site);
$response['site'] = $site;
echo json_encode($response);
}
并将你的ajax结果附加到他身上:
$.ajax({
type: "POST", //send with post
url: "<?php echo base_url('customer/dashboard/index') ?>",
data: {site:site, function:function_site},
dataType: 'json',
success:function(data){
$("#test").html(data.site);
},
});
我现在没有环境来测试你,但是你应该看看你现在正在回应什么。