если заявление дает неверный результат - PullRequest
0 голосов
/ 21 июля 2011

Я пытаюсь понять, почему оператор if не выдает правильное сообщение.Предполагается, что если пользователь выбирает строку, которая не помечена в БД как «В», то отображается первое сообщение.Если они забывают выбрать адрес или уровень обслуживания, тогда может быть запущено другое.Если все случаи верны, выполните оператор else.Однако, что происходит, так это то, что первое сообщение запускается, когда оно выбирается в первый раз и выдает ошибку.Если пользователь забывает выбрать адрес или услугу, то запускается ошибка.Если пользователь затем выполняет все условия, вместо выполнения оператора else он отображает ошибку $ boxstatus, даже если условия выполняются.Может кто-нибудь указать на мою ошибку?Большое спасибо

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" );
header("Cache-Control: no-cache, must-revalidate" );
header("Pragma: no-cache" );
header("Content-type: application/json");
$json = "";
if ($boxstatus!="In") {
  $json .= "{\"Error\": \"ERROR: The box must be in the archive to enable a retrieval.\"}";
}
else if ($service == '' || $address == '') {
  $json .= "{\"Error\": \"ERROR: You must select a retrieval address and a service level.\"}";
}
else {
$json .= "{\n";
$json .= "\"address\": \"".$address."\",\n";
$json .= "\"service\": \"".$service."\",\n";
$json .= "\"box\": \"".$box."\"\n";
//$json .= "box: [\"". implode('","', $box) ."\"]\n";
$json .= "}\n";
}
echo $json;

ajax, если это поможет:

$.ajax({
               type: "POST",
               dataType: "json",
               url: "boxretrieve.php",
               data: "items="+itemlist+columns,
               success: function(data){
               if (data.Error) jAlert(data.Error);
                    else {
                jAlert("You have successfully retrieved\n\rBox: "+custref+"\n\r"+
                                 "Address: "+address+"\n\r"+
                                 "Service: "+service+"\n\r"+
                                 "Destroydate: "+destroydate);
               $("#flex1").flexReload();
               }
               }
             });

+++++ UPDATE +++++++

Изменил вторую ошибку на Error2 и выполнил условие в ajaxи все теперь хорошо.Спасибо всем за помощь.

Ответы [ 2 ]

2 голосов
/ 21 июля 2011

Вы никогда не присваиваете значение $boxstatus, поэтому оно никогда не будет "In"

(Кроме того, не собирайте JSON, разбивая строки вместе, используйте json_encode после составления правильной структуры данных).

1 голос
/ 21 июля 2011

Я попробовал ваш код, настроив переменные. Оно работает! Ничего плохого в условиях. Возможно, вы захотите проверить результат вашего sql-запроса или способ его отображения в браузере.

<?php
$boxstatus = 'In';
$service = '';
$address = '';
$json='';

if ($boxstatus!="In") {
  $json .= "{\"Error\": \"ERROR: The box must be in the archive to enable a retrieval.\"}";
}
else if ($service == '' || $address == '') {
  $json .= "{\"Error\": \"ERROR: You must select a retrieval address and a service level.\"}";
}
else {
$json .= "{\n";
$json .= "\"address\": \"".$address."\",\n";
$json .= "\"service\": \"".$service."\",\n";
$json .= "\"box\": \"".$box."\"\n";
//$json .= "box: [\"". implode('","', $box) ."\"]\n";
$json .= "}\n";
}

echo $json;
?>

Выход:

{"Error": "ERROR: You must select a retrieval address and a service level."}

Я также использовал ваш jQuery, я просто изменил ваш jAlert на простой alert. Работает нормально.

<script type="text/javascript" src="jquery.js">
</script>
<script type="text/javascript">
$(window).load(function(){
    $.ajax
    ({
       type: "POST",
       dataType: "json",
       url: "test.php",
       success: function(data)
       {
           if (data.Error) 
           {
                alert(data.Error);
            }
            else 
            {
                alert("You have successfully retrieved\n\rBox: "+custref+"\n\r"+
                                 "Address: "+address+"\n\r"+
                                 "Service: "+service+"\n\r"+
                                 "Destroydate: "+destroydate);
               $("#flex1").flexReload();
           }
       }
    });
});
</script>

Я не знаю jAlert, но попробуйте использовать alert и сообщите мне результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...