Rumah > Soal Jawab > teks badan
Selepas mengklik butang padam, data yang dipilih hilang dari halaman Nampaknya telah dipadamkan, tetapi ia akan dipaparkan semula selepas menyegarkan semula data dalam jadual pangkalan data, sila tidak dipadamkan lihat data saya Apa yang salah dengan kod itu?
Tindakan penghalaan asal ialah parameter dalam url Ini ialah ralat $action dalam data.php Sekarang mesej ralat telah diubah suai, tetapi data masih tidak boleh dipadamkan daripada pangkalan data. Kain bulu? Bagaimanakah saya harus nyahpepijat kod dalam php?
Selepas pengubahsuaian:
php:
//Buat laluan Tindakan ialah parameter dalam url Ini ialah baris 6 $action dalam data.php.
$action = $_GET['action'];
suis($action) {
kes 'init_data_list':
init_data_list();
pecah;
kes 'tambah_baris':
add_row();
pecah;
kes 'del_row':
del_row();
pecah;
kes 'edit_row':
edit_row();
pecah;
}
//Padam kaedah, bagaimana saya menyahpepijat php dalam penyemak imbas? Bagaimanakah saya boleh melihat sama ada kaedah ini telah dilaksanakan?
fungsi del_row(){
//ujian
/*gema "ok!";*/
//Terima parameter yang dikembalikan
$rowId = $_GET['rowId'];
$sql = "padam daripada t_users di mana user_id='$rowId'";
if(query_sql($sql)){
echo "ok!";
}lain{
echo "Pemadaman gagal!";
}
}
Selepas pengubahsuaian:
Halaman hadapan JS:
var $table = $('#table'),
$remove = $('#remove');
$(fungsi() {
searchData();
delData();
});
fungsi delData() {
$remove.on('klik', function() {
if(confirm("Adakah anda mahu meneruskan pemadaman")) {
var rows = $.map($table.bootstrapTable('getSelections'), function(row) {
//Kembalikan nombor indeks baris yang dipilih
kembali row.user_id;
});
}
$.map($table.bootstrapTable('getSelections'),function(row){
var del_url = "./php/data.php";
//Padam data berdasarkan userId, kerana id ini ialah parameter yang dihantar ke pelayan
var rowId = row.user_id;
//Mengikut keperluan PHP, del_row perlu dihantar kembali untuk mengaktifkan kaedah pemadaman.
/*var dataParam = {
tindakan: "del_row",
rowId:rowId
};*/
$.ajax({
taip: "padam",
url:del_url + "?action=del_row&rowId=" + rowId,
dataType:"html",
contentType: 'application/json;charset=utf-8',
kejayaan: fungsi(data) {
$table.bootstrapTable('remove',{
medan: 'user_id',
nilai: baris
});
$remove.prop('disabled', true);
},
ralat:fungsi(data){
alert('Pemadaman gagal!');
}
});
});
})
}
Selepas pengubahsuaian:
Dilihat dalam Pengepala dalam Rangkaian, ia dipaparkan sebagai: 200
URL Permintaan:http://localhost/muke/php/data.php?action=del_row&rowId=1
Kaedah Permintaan: PADAM
Kod Status:200 OK
Alamat Jauh:[::1]:80
Parameter Rentetan Pertanyaan
tindakan:del_row
rowId:1
Pratonton dalam Rangkaian, mesej ralat asal ialah: tindakan dalam data.php pada baris 6
Tiada apa-apa sekarang, ia kosong
Lihat Respons dalam Rangkaian, mesej ralat asal ialah: tindakan dalam data.php pada baris 6
Tiada apa-apa sekarang, ia kosong
Menggunakan Rest Client untuk menguji, hasilnya ialah 200, tetapi data yang dikembalikan masih gagal padam! Ia benar-benar membunuh saya. Saya tidak dapat mengetahui apa yang salah dan mengapa ia tidak boleh dipadamkan dari maklumat pemulangan, kaedah del_row() dalam PHP mungkin tidak dilaksanakan, bukan?
< br>
Apakah yang perlu saya lakukan?
Laksanakan pernyataan SQL dalam pangkalan data: padam daripada t_users di mana user_id='1' Gesaan adalah bahawa pemadaman berjaya, tetapi pelaksanaan tidak berjaya pada halaman Adakah kerana parameter yang dihantar kembali tidak diterima.
< /p>
phpcn_u15822017-05-16 13:03:04
Untuk meringkaskan, terdapat 4 kesalahan di atas:
Parameter yang dikembalikan melalui pemadaman hanya boleh diperoleh menggunakan $_GET
padam Parameter yang dikembalikan mesti diletakkan dalam URL, bukan dalam badan;
php
Halaman JS bahagian hadapan:<?php
//测试php是否可以拿到数据库中的数据
/*echo "44444";*/
//做个路由 action为url中的参数
$action = $_GET['action'];
switch($action) {
case 'init_data_list':
init_data_list();
break;
case 'add_row':
add_row();
break;
case 'del_row':
del_row();
break;
case 'edit_row':
edit_row();
break;
}
//删除方法
function del_row(){
//测试
/*echo "ok!";*/
//接收传回的参数
$rowId = $_GET['rowId'];
$sql = "delete from t_users where user_id='$rowId'";
if(query_sql($sql)){
echo "ok!";
}else{
echo "删除失败!";
}
}
?>
var $table = $('#table'),
$remove = $('#remove');
$(function() {
searchData();
delData();
});
function delData() {
$remove.on('click', function() {
if(confirm("是否继续删除")) {
var rows = $.map($table.bootstrapTable('getSelections'), function(row) {
//返回选中的行的索引号
return row.user_id;
});
}
$.map($table.bootstrapTable('getSelections'),function(row){
var del_url = "./php/data.php";
//根据userId删除数据,因为这个id就是 传给服务器的参数
var rowId = row.user_id;
$.ajax({
type:"delete",
url:del_url + "?action=del_row&rowId=" + rowId,
dataType:"html",
contentType: 'application/json;charset=utf-8',
success: function(data) {
$table.bootstrapTable('remove',{
field: 'user_id',
values: rows
});
$remove.prop('disabled', true);
},
error:function(data){
alert('删除失败!');
}
});
});
})
}
Kaedah awam, log masuk ke pangkalan data:
function query_sql(){
$mysqli = new mysqli("127.0.0.1", "root", "root", "crud");
$sqls = func_get_args();
foreach($sqls as $s){
$query = $mysqli->query($s);
}
$mysqli->close();
return $query;
}
PHP中文网2017-05-16 13:03:04
Anda menyerahkan permintaan menggunakan kaedah padam, jadi bahagian belakang tidak boleh menerima parameter menggunakan $_GET dan $_POST.
Parameter padam hendaklah diletakkan dalam url:
if($_SERVER['REQUEST_METHOD'] == 'DELETE') {
//参数包含在请求url中
$uri = $_SERVER['REQUEST_URI'];
}
迷茫2017-05-16 13:03:04
Sepatutnya $userId = $_POST['rowId'];
betul
"DELETE FROM `t_user` where `user_id` = '.$userId'"
Sedikit lagi
过去多啦不再A梦2017-05-16 13:03:04
Anda ambil action
放在body里了,自然$_GET
就取不到action
了,要用$_POST
。
看你都用了DELETE
方式提交了,不如改成restful
...
PHP中文网2017-05-16 13:03:04
$sql = "DELETE FROM `t_user` where `user_id` = '".$userId."';";
Adakah terdapat masalah dengan pernyataan sql? Cetaknya apabila program berjalan, salin ke pangkalan data dan jalankan ujian sekali.
習慣沉默2017-05-16 13:03:04
Cetak pertama $_GET untuk melihat apa yang ada?
Tempat awak ini sangat pelik, cuba tukar dataType kepada json
Sebab ralat adalah kerana parameter tindakan tidak ditemui