我在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;
}
}
答案 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注入攻击
答案 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',
请检查并更新您的代码。