我需要一些帮助来使用 ajax 从 jquery 数组中的数据更新 mysql 表。我尝试搜索类似的问题,但找不到任何东西,或者我不知道要搜索的正确术语......我对网络开发/编码仍然相当陌生。
我会尽量清楚地解释我试图做什么。我有一个包含座位的页面,用户通过单击它们来选择座位,单击后,座位 ID 将添加到页面左侧一种购物车区域中自己的 span 标签中。这工作正常。
结帐时,我的 js 文件能够在数组中获取这些座位 ID,但从这里我不确定如何将此数组正确发送到 php 文件,然后让 php 文件从数组中读取座位 ID 并更新相关的座位行以将可用性从 1 更改为 0(这是使用 ajax)。
这是我的代码:
结帐.js
$(document).ready(function(){
$('#checkout').click(function(){
var status = sessionStorage.getItem("username");
if(sessionStorage.getItem("username")){
var tickets = [];
$("#myTickets").find("span").each(function(){ tickets.push(this.id); });
var type = "POST",
url = "scripts/sendSeatDetails.php";
console.log(tickets);
$.ajax ({
url:url,
type:type,
data:tickets,
success: function(response){
if(response == 5){
alert("Seat update query failed");
} else {
alert("success");
}
}
});
} else {
alert("Before purchasing please log in. If you do not have an account please register.");
}
});
});
在控制台日志中,这显示:["A2"、"A3"、"A4"](如果我选择了 ID 为 A2、A3、A4 等的座位)。
发送座位详细信息.php
<?php
include("dbconnect.php");
$myseats=$_POST['tickets'];
$query="update seats set status='0' where seatnum=";
for($i=0;$i<count($myseats);$i++){
$query.="'$myseats[$i]'";
if($i<count($myseats)-1){
$query.=" || seatnum=";
}
}
$link = mysql_query($query);
if (!$link) {
echo 5;
}
?>
这将返回显示成功的警报,但事实并非如此,因为表未更新。谁能帮我解决这个问题或为我指出正确的方向?
感谢您的帮助,并希望将来当我处于更好的技能水平时能够为这个网站做出贡献。
非常感谢。
要在jQuery中发送数组,您必须对其进行序列化,然后在PHP文件中解析它:
data: tickets.serialize(),
...
parse_str($_POST['data'], $data);
然后你把它当作一个普通的数组。
逐个运行更新查询。
$myseats=$_POST['tickets'];
$flag=0;// Total successful updates
$myseats=explode(',',$myseats);
for($i=0;$i<count($myseats);$i++){
$query="update seats set status=0 where seatnum='".$myseats[$i]."'";
$link = mysql_query($query);
if (!$link) {
$flag=$flag+1;
}
}
echo $flag;die;
检查响应。它将是更新的行数。