ajax成功错误

时间:2015-09-16 13:59:47

标签: php ajax

我有这段代码但是我遇到问题才能获得理想的结果 我的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>

可能在一个文件中出现了问题

1 个答案:

答案 0 :(得分:0)

放入错误处理程序(如成功)并在php中发送500标头以触发ajax错误

.............
success: function (data) {
................
},
error: function (data) {
    $.messager.show({
        title: 'EBSPMA Atividades - Erro',
        msg: 'O Registo não foi atualizado'
    });

}
.........

PHP

if($error) {
    http_response_code(500);
    echo json_encode($message);
}

在你的控制台中你应该看到类似的东西: enter image description here

TRY

if (!$stmt->execute()) {
    http_response_code(500); 
    echo json_encode(array('status' => 'error', 'message' => 'Opppss...O Registo não foi atualizado'));
    $stmt->close();
    die();
}