【发布时间】:2021-09-17 03:02:53
【问题描述】:
我想做的事:
- 我正在尝试使用
$.postjQuery 快捷方式将数据发送到我的服务器。
有什么问题:
- 我的程序没有进入我的
switch case,可能是因为我的action发送不正确。
我想做的事:
-
我创建了一个表格,其中一个元素是一个带有
onclickJavaScript 函数的按钮:<button onclick='Delete()'></button>。 -
我的 JavaScript 函数:
function Delete(){
$.post("<?=SITE_URL_ADMIN?>/alexcrudgenerator/res/?action=deleteRegistro", function(data){
if(data){
console.log("Deleteeeed");
}
else {
console.log("Not deleted :(");
}
});
}
- 我的
switch case声明:
switch($_POST['action']){
case 'deleteRegistro': // NOT OK
?>
<script>
alert("I'm in deleteRegistro");
</script>
<?php
break;
}
- 当我点击按钮时会发生什么:
这应该可以工作,因为我在我的发布请求中将我的操作 deleteRegistro 传递给我的服务器 (php)。
我需要帮助,我做错了什么?
如果您想查看,这是我的完整代码:
<?php
include_once(DIR_PLUGINS.'/alexcrudgenerator/main.php');
$test = new GenerateCrud($_POST['tableName'], $_POST['id'], $_POST['tableFields']);
switch($_POST['action']){
case 'datosTabla': // OK.
$res = json_decode($_POST['datos']);
echo json_encode($res, JSON_UNESCAPED_UNICODE);
break;
case 'deleteRegistro': // NOT OK
?>
<script>
alert("I'm in deleteRegistro");
</script>
<?php
break;
case 'showtable': // OK.
$res = getEntireTable($_POST['tableName'], $_POST['id'], $_POST['tableFields']);
$tableName = $_POST['tableName'];
foreach ($res as $data){
$data->acción = "<div class='text-center'><div class='btn-group'><button id='modificar_$data->id' class='btn btn-primary btn-sm btnEditar' value='edit'><i class='material-icons'>edit</i></button><button onclick='Delete()' class='btn btn-danger btn-sm btnBorrar'><i class='material-icons' value='delete'>delete</i></button></div></div>";
$resultados['data'][] = $data;
}
$resultados = json_encode($resultados);
foreach(json_decode($_POST['tableFields']) as $columnsDB){
$fields[] = array('data'=>$columnsDB);
}
$fields[]['data'] = 'acción';
$fields = json_encode($fields);
?>
<head>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
</head>
<div class="container caja">
<div class="row">
<div class="col-lg-12 col-sm-12">
<div>
<table id="tablaUsuarios" class="table table-striped table-bordered table-condensed hover" style="width:100%" >
<thead class="text-center">
<tr>
<?php
foreach (json_decode($_POST['tableFields']) as $columnsTH){
echo '<th>' . strtoupper($columnsTH) . '</th>';
}
echo '<th>ACCIÓN</th>';
?>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
<script>
function Delete(){
$.post("<?=SITE_URL_ADMIN?>/alexcrudgenerator/res/?action=deleteRegistro", function(data){
if(data){
console.log("Deleteeeed");
}
else {
console.log("Not deleted :(");
}
});
}
$(document).ready(function() {
var datos= <?=$resultados?>;
var dynamicColumns = <?=$fields?>;
datos = JSON.stringify(datos);
$('#tablaUsuarios').DataTable({
"language": {"url": "https://cdn.datatables.net/plug-ins/1.10.25/i18n/Spanish.json"},
"paging": true,
"lengthChange": true,
"searching": true,
"info": true,
"autoWidth": true,
"scrollX": true,
"ajax":{
"url": '<?=SITE_URL_ADMIN?>/alexcrudgenerator/crud/res/',
"method": 'POST',
"data":{action: "datosTabla", datos: datos}
},
"columns": dynamicColumns
});
})
</script>
<?php
break;
}
?>
【问题讨论】:
-
您没有描述确切的问题是什么,或者您的目标。但是我可以告诉你,以你现在的方式从 PHP 返回 HTML/JS 的混合将不会被执行。
-
@RoryMcCrossan 我添加了我的问题。对不起!
-
您应该将
action作为请求正文的一部分发送,而不是作为 URL 的一部分发送。 jQuery 的post方法api.jquery.com/jquery.post 接受data属性,您可以将您的操作作为请求正文的一部分传递给服务器。类似data: { action: 'deleteRegistro' }
标签: javascript php jquery post