0

我想在 PHP 变量中保存一条消息,并将它与已经返回的其他数组变量一起发送回去。例如,我在 PHP 代码中进行了一些错误检查,并且想要一个带有特定消息的字符串变量,以便在我的 javascript 中使用。

这是PHP:

<?php
    include('config-searchres.php');

    $term = $_POST['resid'];
    $sql = mysql_query("SELECT * FROM ap_form_8 WHERE id = '$term'"); //select first name (element_1_1) from form #8

    if ($row = mysql_fetch_array($sql)){  //if reservation number exists
        if ($row['element_11'] != 'Cancelled'){  //if reservation has not already been cancelled
            if (strtotime($row['element_3']) >= strtotime(date("Y-m-d"))){  //if reservation has not already passed date
                echo json_encode($row);
            }
            else  //Reservation already passed (old reservation)
            {
                echo 'passed';
            }
        }
        else  //Reservation already cancelled
        {
            echo 'cancelled';
        }
    }
    else  //Reservation not found
    {
        echo 'not found';
    }
    mysql_close();
?>

如您所见,有 3 条不同的消息,“已通过”、“已取消”和“未找到”...如果存在这些条件之一,我想将此字符串发送回我的 javascript,以便我可以显示它在一个 DIV 中。但是,我也想用它发送 $row 数据。

我的JavaScript:

    <script type="text/javascript">
        $(document).ready(function(){
            resetForms('reservation');
            $('#form-reservation').submit(function(event){ 
                event.preventDefault();  //the page will no longer refresh on form submit.
                var resCheck = $(this).find('input[class="reservationid"]').val(); //now we have the reservation ID, let's perform our check.
                $.ajax({ 
                    url: 'inc/searchres.php', 
                    type: 'POST',
                    data: 'resid='+resCheck, 
                    success: function(data){  //data is all the info being returned from the php file 
                        $('#reservation-id').val(resCheck);  //add read ID back into text box
                        var jsonData = $.parseJSON(data);  //parse returned JSON data so we can use it like data.name, data.whatever 
                            //****I wanted the line just below this to display the appropriate message sent back from the PHP****
$("#res-message").html('<a>Reservation ID Located, Information is displayed below</a>');
                            $('#json-reservation').populate({personal_first_name:jsonData['element_1_1'],personal_last_name:jsonData['element_1_2'],personal_phone_1:jsonData['element_7'],personal_email:jsonData['element_2'],reservation_status:jsonData['ADD THIS CELL'], reservation_id:jsonData['id'], reservation_date:jsonData['element_3'],reservation_time:jsonData['element_4'],reservation_party:jsonData['element_5'],reservation_special_request:jsonData['element_6'],reservation_using_coupon:jsonData['element_9'],reservation_coupon_code:jsonData['element_10'],reservation_status:jsonData['element_11']});
                            $("#res-cancel-message").html('');
                    },
                    error: function(){
                        $("#res-message").html('<a>There was an error with your request</a>');
                        $("#res-cancel-message").html('');
                    }
                });
            });
        });
        </script>

我用星号标记了此时我用静态消息填充 DIV 的位置,这是我将从 PHP 填充消息的行。有任何想法吗?

4

6 回答 6

1

您总是可以稍等片刻回显 json 编码的 $row。添加 $row 并将您的消息发送到一个数组变量,您可以对它进行 json 编码并回显。

不能 100% 确定语法细节/点

$response_array = array('message' => 'yourmessage', 'row' => $row);
echo json_encode($response_array);
于 2012-04-26T13:13:53.393 回答
1

您可以将该消息添加为您的 JSON 属性之一,然后适当地搜索它。

于 2012-04-26T13:12:18.520 回答
0

只需从服务器传递适当的消息。让我们假设您的消息在消息变量中:

$("#res-message").html('' + data.message +'预定ID已定位,信息在下方');

于 2012-04-26T13:12:53.243 回答
0

当您将行数据转换为 $row 时,它就是一个数组。如果您敢,您可以在 json_encode 之前将您的消息添加到该数组中。

$row["message"] = ...
于 2012-04-26T13:17:00.820 回答
0

两个都用ajax发送。就像不要在 if else 的正文中回显任何内容,只需将消息存储在变量中,例如$message = 'passed',现在在 php 请求页面的末尾执行此操作:

echo json_encode(array('message_js'=>$message, 'row_js' => $row));

这会发送 json 数组作为响应,因此您可以在其中发送尽可能多的变量。只需将它们放入 array() 并将它们转换为 json 使用json_encode() 转换为 json 并作为响应传递。当收到您的 ajax 成功函数时,只需解码两个 json 变量 :message_jsrow_js.

你可以使用 jquery 的 parsejson 来获取你的变量然后

于 2012-04-26T13:41:56.673 回答
0

你可以这样做:

$result = array();

if ($row = mysql_fetch_array($sql)){  //if reservation number exists
    if ($row['element_11'] != 'Cancelled'){  //if reservation has not already been cancelled
        if (strtotime($row['element_3']) >= strtotime(date("Y-m-d"))){  //if reservation has not already passed date
            $result = array('status' => 'OK', 'data' => $row);
        }
        else  //Reservation already passed (old reservation)
        {
            $result = array('status' => 'passed', 'data' => $row);
        }
    }
    else  //Reservation already cancelled
    {
        $result = array('status' => 'cancelled', 'data' => $row);
    }
}
else  //Reservation not found
{
    $result = array('status' => 'not found', 'data' => null);
}

echo json_encode($result);
于 2012-04-26T13:21:16.777 回答