为什么我的函数不发送ajax变量?

时间:2018-10-31 06:06:53

标签: javascript php jquery html ajax

我在php中有一个代码,该代码生成一个按钮,并且在另一个文件中具有java脚本功能,但是它不起作用,我应该发送值$ id来更新数据库php文件,但是它什么都不做< / p>

索引代码:

<button type="button" class="btn btn-primary" onclick="antenderOrden($folio)">Atender</button>

javascript代码:

  function atenderOrden(folio) {
    $.ajax({
      type: 'post',
      url: '../panel/data.php',
      data: 'folio=' + folio + 'status=A',
      success: function (data) {
          location.reload();
      }
    });
  }

php代码:

//Actualiza el estatus de un registro de orden en la base de datos
if (isset($_POST['folio']) && isset($_POST['status'])) {
    $obj = new Orden();
    $resp = $obj->updateOrden($_POST['folio'], $_POST['status']);
    echo $resp;
    }
    class Orden{
    public function updateOrden($folio, $status) {
        //$conn = new Conexion();
        $conn->conectar();
        $query = "UPDATE c_ordenes SET statuso = '$status' WHERE folio = '$folio'";
        try {
            $resp = $conn->consulta($query);
            $resp = "OK";
        } catch (Exception $ex) {
            $resp = $ex;
        }
        $conn->cerrar();
        return $resp;
    }
}

5 个答案:

答案 0 :(得分:0)

您需要将其作为对象发送给ajax:

...
data: {'folio': folio,'status':'A'},
...

并更新您的按钮以将php变量回显为html。

<button type="button" class="btn btn-primary" onclick="antenderOrden('<?=$folio;?>')">Atender</button>

答案 1 :(得分:0)

您需要添加&才能加入最后一个键=>值

data: 'folio=' + folio + '&status=A',

根据我的评论,在onclick中传递的变量应该用引号引起来,否则javascript将其视为javascript变量,并在控制台中返回未定义的变量错误。

<button type="button" class="btn btn-primary" onclick="antenderOrden('<?php echo $folio; ?>')">Atender</button>

另外,您应该使用准备好的语句来防止SQL注入攻击

Quick Start to using prepared statements

答案 2 :(得分:0)

javascript代码

function atenderOrden(folio) {
$.ajax({
  type: 'post',
  url: '../panel/data.php',
  data: {
         folio : folio ,
          status : 'A'
        },
  success: function (data) 
  {
      location.reload();
  }
});
}

索引代码

<button type="button" class="btn btn-primary" onclick="antenderOrden(<?php echo $folio;?>)">Atender</button>

答案 3 :(得分:0)

尝试一下 对于GET方法:

...
data: {'folio': folio,'status':'A'},
...

对于POST方法:

...
data: jQuery.param({'folio': folio,'status':'A'},
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
...

答案 4 :(得分:0)

有两件事写错了。

1)在html端调用php变量时,您必须添加php标签<?php ?>

这就是为什么您必须在html中这样写:

<button type="button" class="btn btn-primary" onclick="antenderOrden(<?php echo $folio;?>)">Atender</button>

2)在ajax中传递数据的第二种方法是错误的。

有两种类型的数据可以传递:

使用&运算符,其次是{}中的数据传递。

data: {
         folio : folio ,
          status : 'A'
        },

data: 'folio=' + folio + '&status=A',

请检查并更新您的代码。