我有这段代码但是我遇到问题才能获得理想的结果 我的php以json格式返回2个结果(错误和成功)。我收到了正确的json但是我的功能总是会返回成功,即使它应该给出错误 这是代码
var row = $('#dg').datagrid('getRows')[index];
var url = 'update_sala_ocup.php?id=' + row.id_ocup;
$('#dg').datagrid('getRowDetail', index).find('form').form('submit', {
url: url,
onSubmit: function () {
return $(this).form('validate');
},
success: function (data) {
var data = eval('('+data+')');
if (data.error) {
$.messager.show({
title: 'EBSPMA Atividades - Erro',
msg: 'O Registo não foi atualizado'
});
}
else {
$.messager.show({
title: 'EBSPMA Atividades - Sucesso',
msg: 'O Registo foi atualizado corretamente',
timeout: 2000,
showType: 'slide',
style: {
right: '',
top: document.body.scrollTop + document.documentElement.scrollTop,
bottom: '',
zIndex: $.fn.window.defaults.zIndex++
}
});
$('#dg').datagrid('collapseRow', index);
$('#dg').datagrid('updateRow', {
index: index,
row: data
});
$('#dg').datagrid('reload');
}
}
});
json格式
echo json_encode(array('status' => 'error', 'message' => 'Opppss...O Registo não foi atualizado'));
和
echo json_encode(array('status' => 'success', 'message' => 'O Registo foi atualizado corretamente'));
更新1
我的新代码
function updateAtividade(index) {
var row = $('#dg').datagrid('getRows')[index];
var url = 'update_sala_ocup.php?id=' + row.id_ocup;
$('#dg').datagrid('getRowDetail', index).find('form').form('submit', {
url: url,
onSubmit: function () {
return $(this).form('validate');
},
success: function (data) {
var data = eval('('+data+')');
if (data) {
$.messager.show({
title: 'EBSPMA Atividades - Sucesso',
msg: 'O Registo foi atualizado corretamente',
});
$('#dg').datagrid('collapseRow', index);
$('#dg').datagrid('updateRow', {
index: index,
row: data
});
$('#dg').datagrid('reload');
}
},
error: function (data) {
$.messager.show({
title: 'EBSPMA Atividades - Erro',
msg: 'O Registo não foi atualizado'
});
}
});
}
还有同样的问题
更新2
好吧,也许最好显示我的完整代码
PHP
<?php
error_reporting(E_ALL | E_NOTICE);
ini_set('display_errors', '1');
$mysqli = new mysqli('localhost', 'xxxxx', 'xxxxx');
if (mysqli_connect_errno()) {
trigger_error('Database connection failed: ' . mysqli_connect_error(), E_USER_ERROR);
}
$id = intval($_REQUEST['id']);
$turma = $_POST['turma'];
$sqlDados = "SELECT `id_dia` , `id_sala` , `id_tempo` FROM `ebspma_paad_ebspma`.`sala_ocupacao` WHERE `id_ocup` = ?";
$stmt = $mysqli->prepare($sqlDados);
if ($stmt === false) {
trigger_error('Wrong SQL: ' . $sqlDados . ' Error: ' . $mysqli->error, E_USER_ERROR);
}
$stmt->bind_param('i', $id);
$stmt->execute();
$stmt->store_result();
$num_of_rows = $stmt->num_rows;
$stmt->bind_result($id_dia,$id_sala,$id_tempo);
$stmt->fetch();
$stmt->free_result();
$stmt->close();
$sql = "SELECT COUNT(id_dia) FROM `ebspma_paad_ebspma`. `sala_ocupacao` WHERE `id_ocup` = ? AND id_dia = ? AND id_sala= ? AND id_tempo = ? AND id_turma = ? ";
$stmt = $mysqli->prepare($sql);
if ($stmt === false) {
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $mysqli->error, E_USER_ERROR);
}
$stmt->bind_param('iiiii', $id, $id_dia, $id_sala, $id_tempo, $turma);
$stmt->execute();
$stmt->bind_result($existe);
$stmt->fetch();
$stmt->close();
if ($existe == 1) {
echo json_encode(array('status' => 'error', 'message' => 'Este dia e tempo já estão registados na base de dados'));
} else {
$sql = "update `ebspma_paad_ebspma`. `sala_ocupacao` set id_turma= ? where id_ocup = ?";
$stmt = $mysqli->prepare($sql);
if ($stmt === false) {
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $mysqli->error, E_USER_ERROR);
}
$stmt->bind_param('ii', $turma, $id);
if (!$stmt->execute()) {
echo json_encode(array('status' => 'error', 'message' => 'Opppss...O Registo não foi atualizado'));
}
$stmt->close();
echo json_encode(array('status' => 'success', 'message' => 'O Registo foi atualizado corretamente'));
}
我的主要文件
<?PHP
//require_once("./include/membersite_config.php");
//if (!$fgmembersite->CheckLogin()) {
// $fgmembersite->RedirectToURL("index.php");
// exit;
//}
if($error) {
http_response_code(500);
echo json_encode($message);
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>EBSPMA - Salas</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<link rel="stylesheet" type="text/css" href="http://www.jeasyui.com/easyui/themes/icon.css">
<link rel="stylesheet" type="text/css" href="http://www.jeasyui.com/easyui/themes/color.css">
<link rel="stylesheet" type="text/css" href="http://www.jeasyui.com/easyui/demo/demo.css">
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.min.js"></script>
<script type="text/javascript" src="http://www.jeasyui.com/easyui/jquery.easyui.min.js"></script>
<script type="text/javascript" src="http://www.jeasyui.com/easyui/datagrid-detailview.js"></script>
<script type="text/javascript" src="http://www.jeasyui.com/easyui/locale/easyui-lang-pt_BR"></script>
<script type="text/javascript" src="http://www.jeasyui.com/easyui/datagrid-filter.js"></script>
<script type="text/javascript" src="js/scripts.js"></script>
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="css/easyui.css">
<link rel="stylesheet" type="text/css" href="themes/icon.css">
<link rel="stylesheet" type="text/css" href="themes/demo/demo.css">
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="img/apple-touch-icon-144-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="img/apple-touch-icon-114-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="img/apple-touch-icon-72-precomposed.png">
<link rel="apple-touch-icon-precomposed" href="img/apple-touch-icon-57-precomposed.png">
<link rel="shortcut icon" href="img/favicon.png">
<script type="text/javascript">
$(function () {
$('#dg').datagrid({
view: detailview,
detailFormatter: function (index, row) {
return '<div class="ddv"></div>';
},
onExpandRow: function (index, row) {
var ddv = $(this).datagrid('getRowDetail', index).find('div.ddv');
ddv.panel({
border: false,
cache: true,
href: 'show_form.php?index=' + index,
onLoad: function () {
$('#dg').datagrid('fixDetailRowHeight', index);
$('#dg').datagrid('selectRow', index);
$('#dg').datagrid('getRowDetail', index).find('form').form('load', row);
}
});
$('#dg').datagrid('fixDetailRowHeight', index);
}
});
});
function cancelUpdate(index) {
var row = $('#dg').datagrid('getRows')[index];
if (row.isNewRecord) {
$('#dg').datagrid('deleteRow', index);
} else {
$('#dg').datagrid('collapseRow', index);
}
}
function updateAtividade(index) {
var row = $('#dg').datagrid('getRows')[index];
var url = 'update_sala_ocup.php?id=' + row.id_ocup;
$('#dg').datagrid('getRowDetail', index).find('form').form('submit', {
url: url,
onSubmit: function () {
return $(this).form('validate');
},
success: function (data) {
var data = eval('('+data+')');
if (data) {
$.messager.show({
title: 'EBSPMA Atividades - Sucesso',
msg: 'O Registo foi atualizado corretamente',
});
$('#dg').datagrid('collapseRow', index);
$('#dg').datagrid('updateRow', {
index: index,
row: data
});
$('#dg').datagrid('reload');
}
},
error: function (data) {
$.messager.show({
title: 'EBSPMA Atividades - Erro',
msg: 'O Registo não foi atualizado'
});
}
});
}
</script>
</head>
<body>
<div class="container">
<div class="row clearfix">
<div class="col-md-12 column">
<ul class="nav nav-tabs">
<li>
<a href="entradAdmin.php">Home</a>
</li>
<li>
<a href="docCheckEquip.php">Equipamentos</a>
</li>
<li>
<a href="reqDocente.php">Requisições</a>
</li>
<li>
<a href="docCheckFormacao.php">Formações</a>
</li>
<li>
<a href="contactos_admin.php">Contactos</a>
</li>
<li>
<a href="logout.php">Sair</a>
</li>
</ul>
<h3>
Bem-Vindo
</h3>
<table id="dg" style="width:1100px;height:640px" class="easyui-datagrid" url="get_ocupacao.php" title="Ocupação de Salas"
toolbar="#toolbar" pagination="true" idField="id"
rownumbers="true" fitColumns="true" resizable="true" pageSize="20">
<thead>
<tr>
<th field="id_ocup" auto="true" hidden="true"</th>
<th field="dia"width="150" sortable="true">Dia</th>
<th field="sala" width="150" sortable="true">Sala</th>
<th field="inicio" width="150" sortable="true" sortable="true">Tempos</th>
<th field="turma" width="150" sortable="true">Turma</th>
</tr>
</thead>
<div id="toolbar">
<a href="registoOcupacaoSalas.php" class="easyui-linkbutton" iconCls="icon-add" plain="true" onclick="newUser()">Registar Ocupação</a>
</div>
</table>
<script>
$.extend($.fn.datagrid.defaults.operators, {
notnull: {
text: 'NotNull',
isMatch: function(source, value){
return String(source) != '';
}
}
})
</script>
<script type="text/javascript">
$(function(){
var dg = $('#dg').datagrid();
dg.datagrid('enableFilter', [{
field:'inicio',
type:'text',
}]);
});
</script>
</div>
</div>
</div>
</body>
</html>
可能在一个文件中出现了问题
答案 0 :(得分:0)
放入错误处理程序(如成功)并在php中发送500标头以触发ajax错误
.............
success: function (data) {
................
},
error: function (data) {
$.messager.show({
title: 'EBSPMA Atividades - Erro',
msg: 'O Registo não foi atualizado'
});
}
.........
if($error) {
http_response_code(500);
echo json_encode($message);
}
if (!$stmt->execute()) {
http_response_code(500);
echo json_encode(array('status' => 'error', 'message' => 'Opppss...O Registo não foi atualizado'));
$stmt->close();
die();
}