通过ajax将js值发送​​到php控制器

Yaz*_*rez 2 javascript php ajax jquery

我有这个按钮

<button  id="<?php echo $u['id']?>" name="activation" onclick="handleButton(this);" type="submit" class="btn btn-success"></button>
Run Code Online (Sandbox Code Playgroud)

这个按钮与此相关

<td id="<?php echo $u['id']?>"><?php echo $u['id']?></td>
Run Code Online (Sandbox Code Playgroud)

我正在使用此脚本将按钮的值发送到我的php控制器

function handleButton(obj) {
    var javascriptVariable = obj.id;
//  alert (javascriptVariable);
    $.ajax({
          type: "POST",
          url: "<?php echo base_url(); ?>index.php/admin/active_users",
          dataType: 'text',
          data: 'myname='+javascriptVariable,
          success: function (data){
            }

    });
}
Run Code Online (Sandbox Code Playgroud)

当我使用警报时,结果javascriptVariable是正确的,我希望它在我的控制器中,所以我在我的控制器中尝试这样做:

if(isset($_POST['activation']))
{
    $name = $this->input->post('myname');
    var_dump($name);
}
Run Code Online (Sandbox Code Playgroud)

但我得到了null价值,有什么不对?

Rig*_*lly 5

当您通过AJAX从浏览器传递数据时,您在data:参数中传递的数据将被发送到PHP脚本.

因此,如果要activation在PHP脚本中进行测试,则必须实际发送该参数

另请参阅data:下面的参数创建修订.当你传递多个参数时,它更容易阅读并且更容易正确编码,因为你不必记住&+连接.

function handleButton(obj) {
    obj.preventDefault();
    $.ajax({
        type: "POST",
        url: "<?php echo base_url(); ?>index.php/admin/active_users",
        dataType: 'text',
        data: {activation: 1, myname: obj.id},   // add parameter
        success: function (data){
            alert(data);
        }

    });
}
Run Code Online (Sandbox Code Playgroud)

现在,PHP将看到$ _POST数组中的2个参数activationmyname

if(isset($_POST['activation']))
{
    $name = $_POST['myname'];
    var_dumb($name);
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用的是我认为您的框架

if(isset($this->input->post('activation')) {
    $name = $this->input->post('myname');
    var_dumb($name);
}
Run Code Online (Sandbox Code Playgroud)

编辑:

发现另一个问题,你的按钮有一个属性,type="submit"这将导致javascript以正常方式提交的表格运行.

移除type="submit"属性并加倍确认表单不会被提交以及AJAX preventDefault();在AJAX调用之前添加调用