javascript - 将数据从 javascript forEach 循环中的 php 数组发送到 ajax 调用的 url
问题描述
我试图在php中循环一个mysql查询的结果,查询的输出是一个类似于[10201,10202]的数组。我想获取结果并将其循环到我的 javascript 函数中名为 id 的变量,并通过我的 ajax 调用的 url 循环它。目标是获取 id 并在另一个页面上的 sql 查询中使用它来更改我们数据库中 id 的日期。
mysql查询:
<?php
// sql query for # print all open orders function
$sql = "SELECT Order_PID
FROM `Order`
WHERE SHIPDATE IS NULL
AND Address1 IS NOT NULL;";
$query = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_assoc($query)) {
$order[] = $row['Order_PID'];
}
?>
javascript 函数:我正在尝试使用 forEach 函数来遍历数组的结果。
$('button#printOpenOrders').on('click', function(e) {
if(confirm("Are you sure you want to print all open orders and mark them as pending?")) {
e.preventDefault();
// prints all open orders
window.open("/resources/scripts/allOpenPDF.php");
var arr = $order;
arr.forEach(function(id) { // <====this function
$.ajax({
url: "/resources/scripts/pending-order.php?id=" + id, // <===this variable
datatype : "string",
success : function(data) {
location.reload(true);
}
})
})
}
});
如果它有帮助是我的回调脚本
<?php
// login validation
session_start();
if (!isset($_SESSION['loggedin']) && $_SESSION['loggedin'] != true) {
$url = $_SERVER['DOCUMENT_ROOT'].'/index.php';
header("Location: ../../index.php");
}
// establish connection to database
include $_SERVER['DOCUMENT_ROOT'].'/resources/scripts/dbconnect.php';
$conn = openConnection();
// capture id
$id = $_GET['id'];
$pendingDate = date_create_from_format("m/d/Y", "07/26/1996");
$pendingDate = date_format($pendingDate, "Y-m-d H:i:s");
$sql = $conn->prepare("UPDATE `Order`
SET SHIPDATE = ?
WHERE Order_PID = ?");
$sql->bind_param("si", $pendingDate, $id);
$sql->execute();
echo "success";
closeConnection($conn);
?>
如果我的部分代码没有意义,那么我是新手,我正在利用我目前有限的知识将所有这一切一起弗兰肯斯坦。任何朝着正确方向的轻推都会非常有帮助。
解决方案
您可以输出 $order 变量内容,但您需要使用 PHP,并且您必须使用 json 格式对其进行编码,因此这实际上可以工作:
var arr = <?PHP echo json_encode($order); ?>;
但它很容易出错,语法不是很好阅读,如果该变量以某种方式变为您不期望的格式,它可能会导致另一个 JavaScript 语法错误。
但在我看来,最好的方法是发出 AJAX 请求并获取这些订单 IDS,然后您可以创建另一个 AJAX 请求来发送所有这些订单 IDS,因此您不需要 .forEach 的东西和您的逻辑处理多个订单需要修改以适应这些变化。
但是由于您已经在 PHP 中拥有这些 IDS,我的意思是存储在 $order 变量中,您可以对其进行编码并在一个请求中一次将所有 id 发送给它。
推荐阅读
- django - class has no 'objects' member
- r - Subsetting only the workdays from a time-series
- java - javafx:如何使用按钮操作事件调用同一类中的方法?我有多个错误和部分代码无法运行
- c++ - I can't print 2D vector
- angular - Invoke modal inside SwitchMap in angular2 resolver
- esp8266 - 如何发送和接收长数据 HC-05
- javascript - 部署 express 并使用路由前缀做出反应
- r - 我的 R 代码有什么问题,它没有给出预期的输出
- tensorflow - MultiWorkerMirroredStrategy() not working on Google AI-Platform (CMLE)
- python - 我在将我的机器人文件推送到 heroku 时遇到问题