gpt4 book ai didi

javascript - 如何使用ajax将数据从Javascript传递到PHP

转载 作者:行者123 更新时间:2023-12-03 01:16:40 25 4
gpt4 key购买 nike

我正在努力从远程服务器接收 JSON 格式的数据并将其保存到数据库中。远程服务器每分钟更新一次数据。

我编写了一个 JavaScript 程序,用于从远程服务器接收 jason 数据。现在的问题是我无法将此数据传递到 PHP 文件以保存在数据库中。

我尝试了 stackoverflow 上相同线程的解决方案,但到目前为止这些还不起作用。

我正在尝试在php中打印从js接收到的数据以查找是否收到数据。我编写的代码可以运行,但没有任何反应。按F12时没有显示错误。

这是我的代码。我在其中做错了什么。

编辑

我发现的另一个问题是它没有打印 echo 。这意味着如果我尝试简单地回显“test”;,它不会打印任何内容。我在下面添加完整的代码,以查看如何/在哪里使用 echo 来打印结果。为什么 echo 没有打印出来?

Javascript:

<script>

var humArray = [];
var temArray = [];
var N = 24;
for (i = 0; i < N; i++) {
humArray.push(0);
temArray.push(0);
}

function loadChart() { //fetches json data & calls dspChart() to render graph
var wData, hum, tem;
var requestURL = 'https://cors.io/?http://api.holfuy.com/live/?s=759&pw=h1u5l4kka&m=JSON&tu=C&su=m/s'; //URL of the JSON data
var request = new XMLHttpRequest({
mozSystem: true
}); // create http request
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
wData = JSON.parse(request.responseText);
hum = wData.humidity;
tem = wData.temperature;
humArray.shift();
humArray.push(hum);
temArray.shift();
temArray.push(tem);
//dspChrt(humArray, temArray);

$.ajax({
url: 'index.php',
type: 'GET',
data: { temArray : temArray, humArray : humArray },
success: function (data) {
console.log( data );
},
error: function (data) {
console.log(data);
},

});

}
}
request.open('GET', requestURL);
request.send(); // send the request
//dspChrt(hum);
}
var myVar = setInterval(loadChart, 60000);
</script>

index.PHP

<?php

if (isset($_GET['data']))
{

$WData = $_GET['data'];
$Humidity = data.humArray;
$Temprature = data.temArray;

echo "Hum".$Humidity."Temp".$Temprature;

}
?>

完整代码

<div class="container">

<div class="row">

<div class="col-sm" style="background-color: #FFFFFF">

<h2 style="color:#B93B8F;">Data from JS</h2>

<?php

$servername = "localhost";
$username = "postgres";
$password = "test123";
$dbname = "testDB";

class TableRows extends RecursiveIteratorIterator {
function __construct($it) {
parent::__construct($it, self::LEAVES_ONLY);
}

function current() {
return "<td style='width:150px;border:1px solid grey;'>" . parent::current(). "</td>";
}

function beginChildren() {
echo "<tr>";
}

function endChildren() {
echo "</tr>" . "\n";
}
}


?>

</div>


<?php

if (isset($_GET['data']))
{

$WData = $_GET['data'];
$Humidity = $WData.humArray;
$Temprature = $WData.temArray;

echo "Hum".$Humidity."Temp".$Temprature;

}

?>


<h2>JS Update</h2>
<div>
<canvas id="myChart"></canvas>
</div>


<div class="col-sm" style="background-color: #FFFFFF">
<?php
echo "<h3>WeatherData</h3>";
echo "<table class='table table-hover table-bordered table-reponsive'>";
echo "<thead class='table-dark'>";
echo "<tr><th>humidity</th><th>temprature</th></tr>";

try {
$conn = new PDO("pgsql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT humidity, temprature FROM weatherdata");
$stmt->execute();

// set the resulting array to associative
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
echo $v;
}
}
catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
echo "</thead'>";
echo "</table>";

?>

<div id="form">

<div id="login">
<form action="" method="post">
<input type="text" name="humidity" id="humidity" required="required" placeholder="Enter humidity"/>
<input type="text" name="temprature" id="monikulmio_gps" required="required" placeholder="Enter temprature"/>
<input type="submit" value="Insert" name="submit12"/><br />
</form>
<hr/>
</div>

<?php

if(isset($_POST["submit12"])){

try {


$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line
$sql = "INSERT INTO weatherdata (humidity, temprature)
VALUES ('".$_POST["humidity"]."','".$_POST["temprature"]."')";
echo "<meta http-equiv='refresh' content='0'>";
if ($conn->query($sql)) {
echo "<script type= 'text/javascript'>alert('New Record Inserted Successfully');</script>";
}
else{
echo "<script type= 'text/javascript'>alert('Data not successfully Inserted.');</script>";
}

$dbh = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
}

}

$conn = null;

?>

</div>

</div>


</div>
</div>

</div>

</body>

最佳答案

在你的 php 中,你正在检查 isset $_GET['data'] 但它总是会失败。您发送的数据不是 temArray 和 humArray。因此,请在 $_GET['humArray']$_GET['temArray']

上使用 isset

所以你的代码将是:

<?php

if (isset($_GET['humArray'])){
$Humidity = $_GET['humArray'];
$Temprature = $_GET['temArray'];
echo "Hum".$Humidity."Temp".$Temprature;
}
?>

我还假设:

  1. 你的 js 正在向 php 发送数据。
  2. 即使您说 humArray 和 temArray,您也只是获取变量而不是数组。

如果这些是您需要执行的数组(而不是使用 echo):

print_r($Humidity);
print_r($Temprature);

关于javascript - 如何使用ajax将数据从Javascript传递到PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51982678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com