Ошибка $ .get в зависимости от результата файла php

0

Я создаю веб-страницу, где пользователь может "подписать" некоторые соглашения и просматривать подписанные и новые (беззнаковые) соглашения. Для этого веб-страница использует 2 функции в приведенном ниже коде, чтобы получить соответствующую информацию из базы данных, а затем создать веб-страницу. К сожалению, когда -and только when- php файл (process.php) возвращает переменную nrofagreements = 0, консоль показывает ошибку для функции get, для любых других значений nrofagreements> 0 ошибки не возникает - см. Консольный журнал ниже. Я также проверил (с отладчиком Netbeans), что process.php работает правильно - см. Вывод json ниже для nrofagreements = 0-, но я все еще подозреваю, что ошибка должна быть в этом файле php (?) Любая идея, что пойдет не так, и как исправить Это?

A1. Код jquery:

$(document).ready(function(){

function NewAgreements(){

var jqxhr = $.get( "process.php", //get all
       { command: "getnewagreements", val1: "", val2: "" },
       function(msg) {

        }, 
        "json"
        ).done(function(msg) {
            console.log( "NewAgreement. $.get result: second success" );
           //some code here to build the form based on msg from $.get()
            form = buildNewAgreementsform(msg); //build form with supplier agreements and related products 
            $("#wrapper").append(form);

            })//.done(function()
        .fail(function() {
            console.log( "NewAgreement. $.get result: error" );
        })//.fail(function()
        .always(function() {
            console.log( "NewAgreement. $.get result: finished" );
       });//$.get( 

}//function getX()
//used by: tabs-agreements

NewAgreements();

function SignedAgreements(){
var jqxhr = $.get( "process.php", //get all
       { command: "getsignedagreements", val1: "", val2: "" },
       function(msg) {
           //var ecorp_eprodselectid;

        }, 
        "json"
      ).done(function(msg) {
            console.log( "SignedAgreement. $.get result: second success" );

            //some code to build the form based on the msg info from $.get()
            form = buildSignedAgreementsform(msg); //build form with supplier agreements and related products 
            $("#wrapper-signedagreements").append(form);

            })//.done(function()
        .fail(function() {
            console.log( "SignedAgreement. $.get result: error" );
        })//.fail(function()
        .always(function() {
            console.log( "SignedAgreement. $.get result: finished" );
       });//$.get( ", 
}

SignedAgreements();

}); //$(document).ready

A2 упрощенный php-код:

session_start();

$response_array = array();

$cmd = $_GET['command'];

switch($cmd){     //command handler
case 'getsignedagreements': 
//some code here
$response_array['nrofagreements'] = $k;
    if($response_array['nrofagreements'] == 0){
        $response_array['status_general'] = 'success';
        break;
    }
//some code here
break;

case 'getsignedagreements':
//some code here
break;

default: //invalid command from webpage
    $response_array['status_general'] = 'error';
 break;//default
}//switch

$str = json_encode($response_array);
echo json_encode($response_array);

B. консоль журнала:

NewAgreement. $.get result: error
NewAgreement. $.get result: finished
SignedAgreement. $.get result: second success
SignedAgreement. $.get result: finished

C log json для функции NewAgreements:

"{"nrofagreements":0,"status_general":"success"}"
Теги:

2 ответа

0

Я проверил ваш код, нашел один нелогичный элемент в process.php (обрабатывается один отдельный случай):

//...
case 'getsignedagreements': 
//...

//...
case 'getsignedagreements':
//...

==> следует исправить что-то вроде (обрабатывая два случая):

//...
case 'getnewagreements': 
//...

//...
case 'getsignedagreements':
//...
0

У меня нет конкретного исправления для вас, но у меня есть кое-что, что поможет вам в правильном направлении...


Системный дизайн

Одна из философий, которые мы считаем дорогой, - это идея, что все должно выполнять свою работу самым эффективным способом. Проблема для большинства разработчиков заключается в том, что они путаются с тем, что будет делать каждая часть их приложения, и, следовательно, попытаться выполнить 5 заданий с одним компонентом

Причина, по которой я объясняю это, состоит в том, что часть вашего вопроса задается вопросом, следует ли проверять с помощью JS или PHP. Ответ заключается в том, что вы должны знать, какая часть системы будет работать - похоже, вы используете PHP для проверки правильности ввода с сеансом, поэтому я бы предположил, что вы обрабатываете только логику для этого в Файл PHP


Ajax

Лично я бы обработал ответ в вашей $.get, но я бы переключился на Ajax в качестве своего собственного предпочтения:

$.ajax({
    url: "process.php",
    data: { command: "getnewagreements", val1: "", val2: "" },
    success: function (msg) {
      //handle validation in here
    },
    error: function(msg) {
        //only fires when the URL can't be found etc
    }
});
  • 0
    Спасибо (все) за ваши комментарии и советы по дизайну (!). В конце концов я только что обнаружил, что мой php-код (не показанный на этом сайте) действительно содержит некрасивую ошибку кодирования, когда моя написанная функция PDO записывала NULL в массив, когда нет найденных (согласованных) записей - отражая мой ограниченный опыт начинающих. Я все еще нахожу странным, что Netbeans не указал ошибку или предупреждение ...
  • 0
    Нет проблем! Если у вас есть какие-либо проблемы, просто спросите!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню