0

我尝试从数据库中获取数据以通过 ajax 显示数据,但未能成功。它部分工作,因为来自 mysql 的数据使这个东西无法运行。


这是我的funds_transfer_backend.php页面。此页面会将变量分配给 json 数组。

session_start(); 

if(!isset($_SESSION['myusername']))
{
    header("Location: ../index.html");
    die();
}
            include("../connect.php");

            $myusername = $_SESSION['myusername'];

            $sql="SELECT client_id FROM `client` WHERE username='$myusername'";
            $result=mysqli_query($conn, $sql);

            while ($row=mysqli_fetch_row($result)){

            $id = $row['0'];  
            }    



            $index_num = $_POST['index_num'];
            $to_account_num = $_POST['recipient'];
            $amount = $_POST['amount'];

            if ($amount == '' || $to_account_num == '' || $index_num == -1){
                //echo "Please complete the form!";
                $response = -1;
            }

            else {  

             // check account number exist
            $query2 = "SELECT 1 FROM account WHERE id='$to_account_num' LIMIT 1";
            if (mysqli_num_rows(mysqli_query($conn, $query2))!=1) {
                 //echo "Recipient account number is invalid!";
                $response = -2;
            }   

            else {

            $query2 = "SELECT client.name, client.email FROM account JOIN client USING (client_id) WHERE account.id = '$to_account_num' LIMIT 1";
            $result=mysqli_query($conn, $query2);
            while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { 

                $name = $row['name'];
                $email = $row['email'];

            } 
            $response = 1;

            }
            } // check account num else bracket

        $display = array('response' => $response, 'name' => $name);
        echo json_encode($display);

但是,如果我'name' => $name从数组中删除#stagediv 将触发如下图所示:

在此处输入图像描述


这是我的funds_transfer.php页面

<script type="text/javascript">

 function update() {
      var    two = $('#index_num').val();
      var    three = $('#recipient_box').val();
      var    five = $('#amount_box').val();


 $.post("funds_transfer_backend.php", { 
    index_num   : two,
    recipient   : three, 
    amount      : five

},function(data){


    if (data.response==-1) { 
        $('#stage').show().html("Please complete the form!"); 
    }

        $('#stage').delay(2000).fadeOut();


},"json");

        } 

</script>

...other code goes here

     <div id="stage" style="background-color:#FF6666; padding-left:20px; color: white;"></div>

     <div id="confirm" style="background-color:#FF7800; padding-left:20px; color: white;"></div>


我尝试使用手动形式检查 db 中的数据是否存在method="post",我可以看到名称正在回显。任何帮助表示赞赏并提前感谢。

4

2 回答 2

1

当您的响应为-1时,您的$name变量未定义。因此 php 可能会显示警告(取决于您的设置),并且您正在尝试将未定义的变量添加到您的数组中。这将使您的输出/ json 无效。

例如,您可以设置:

$name = '';

isset($name)在脚本开始时或在尝试使用变量之前检查是否设置了变量以避免这些问题。

当然还有其他解决方案,比如-1直接输出你的脚本并在那里退出脚本。

于 2013-06-04T17:21:22.100 回答
1

我总是初始化我的变量。

$myusername = isset($_SESSION['myusername']) ?$_SESSION['myusername'] :假;

然后你可以安全地做:

if ($myusername) {} 不抛出警告。

我这样做天气我从数据库、post/get/session 或 json/ajax 获取数据。

前期需要一些额外的时间,但会消除后端的数十个错误,因此您可以节省更多时间。

于 2013-06-04T17:27:38.770 回答