【问题标题】:How to get data sent from AJAX POST in PHP?如何在 PHP 中获取从 AJAX POST 发送的数据?
【发布时间】:2023-03-10 18:44:01
【问题描述】:

我正在尝试使用 AJAX & JQUERY 获取 POST 数据

我有一个引导下拉菜单,其中显示了数据库中的一些值。 我想将我选择为 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 的数据,那么它会显示正确的值。

另外,如果我打开浏览器控制台,可以看到我在 Network->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

【问题讨论】:

  • @Rajan 你能展示一下你在“console.log(site);”中得到了什么
  • @KetanSolanki 我得到了我从下拉列表中选择的项目
  • 你能试试echo $_POST['site];吗?可能与codeigniter的后期卫生有关,虽然不太可能......
  • 我试过 @AlexTartan 我也试过回应 echo $_REQUEST[]
  • 我不应该使用这样的东西吗:xhr.send();

标签: javascript php jquery ajax twitter-bootstrap


【解决方案1】:

尝试像这样更改您的下拉代码,看看它是否有效:

<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){ 

            },

        });
    });

【讨论】:

  • @Rajan 尝试提醒变量“Site”,我已更改代码。
  • ketan 如果我像这样发出警报,我会得到正确的警报 var site = this.id;控制台.日志(站点);警报(站点);
  • 如果我尝试你的方式,我会在警报中得到未定义
【解决方案2】:

尝试创建一个简单的 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);
        },

    });

我现在没有可以为你测试的环境,但你应该看看你现在在回响什么。

【讨论】:

  • 如果我在 li 标签内添加一个 div 会改变导航栏的外观?
  • @Rajan,不,将 div 放在 li 之外。你应该看到你在回响什么。
  • 我收到这个 php 错误消息:未定义索引:函数
  • @Rajan 你在 ajax 上传递函数参数吗?
  • 我只是复制你的代码并粘贴并尝试然后我得到了这个错误
猜你喜欢
  • 1970-01-01
  • 2016-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-20
  • 1970-01-01
  • 2021-09-26
  • 1970-01-01
相关资源
最近更新 更多