我尝试从数据库中获取数据以通过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
,则#stage
div会触发如下图所示:
这是我的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>
我尝试使用手动表单method="post"
检查来自db的数据是否存在,我可以看到名称是echo。任何帮助都表示赞赏,并提前感谢。
答案 0 :(得分:1)
当您的回复为-1
时,您的$name
变量未定义。因此,php可能会显示警告(取决于您的设置),并且您尝试向阵列添加未定义的变量。这将使输出/ json无效。
您可以设置例如:
$name = '';
在脚本开头或检查变量是否设置为isset($name)
,然后再尝试使用它来避免这些问题。
当然还有其他解决方案,例如直接输出-1
并退出脚本。
答案 1 :(得分:1)
我总是初始化变量。
$ myusername = isset($ _ SESSION ['myusername'])? $ _SESSION ['myusername']:false;
然后你可以安全地做到:
如果($ myusername){}没有抛出警告。
我这样做天气我从db,post / get / session或json / ajax获取数据。
预先花费一点额外的时间,但在后端删除了几十个错误,这样你就可以节省更多的时间。