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

如何使用ajax将数据从Javascript传递到PHP,javascript,php,html,Javascript,Php,Html,我正在努力从远程服务器接收JSON格式的数据,并将其保存到数据库中。远程服务器每一分钟更新一次数据 我编写了一个JavaScript程序,从远程服务器接收jason数据。现在的问题是我无法将这些数据传递到PHP文件以保存在数据库中 我在stackoverflow上的相同线程中尝试了该解决方案,但这些线程到目前为止都不起作用 我试图在php中打印从js接收到的数据,以确定是否收到了数据。我写的代码运行,但什么也没发生。按F12键时不显示错误 这是我的密码。我在做什么呢 编辑 我发现的另一个问题是它

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

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

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

我试图在php中打印从js接收到的数据,以确定是否收到了数据。我写的代码运行,但什么也没发生。按F12键时不显示错误

这是我的密码。我在做什么呢

编辑

我发现的另一个问题是它没有打印回声。这意味着如果我试着简单地进行回声测试;,它不打印任何东西。我在下面添加了完整的代码,以查看如何/在何处使用echo打印结果。为什么echo得不到指纹

Javascript:

index.PHP

完整代码


在php中,您正在检查isset$\u是否获取['data'],但它总是会失败。您不发送数据,而是发送temArray和humArray。因此,在$\u GET['humArray']或$\u GET['temArray']上使用isset

因此,您的代码将是:

<?php

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

请尝试将代码分为至少两个文件:

index.php-使用html和javascript; fetchWeatherRequest.php-代码如下。 使用以下命令更新javascript代码:

$.when( $.ajax({
    type: 'POST',
    url: 'fetchWeatherRequest.php',
    dataType: 'json'
  })
).then( function( response ) { 
    // Code so render results on index.php;
});
fetchWeatherRequest.php:

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://cors.io/?http://api.holfuy.com/live/?s=759&pw=h1u5l4kka&m=JSON&tu=C&su=m/s",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Cache-Control: no-cache"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  // Here code to save $response into database;

  echo $response;
}

在index.PHP中,您试图访问data.humArray,这应该是$WData.humArray,temArray也是如此。这里您犯了一个错误:data:{temArray:temArray,humArray:humArray}试试这个:data:{temArray:temArray,humArray:humArray}你到底为什么要使用xmlhttprequest和其中的$.ajax???当你最终想要将数据存储在服务器上时,为什么首先要通过客户端JS这样做?在服务器上使用curl-然后不需要在allIt的数组中使用CORS.io,正如你在声明“var humArray=[];”中看到的那样。我尝试了两种方法,即isset$\u GET['humArray']&print\r$湿度;。但是不要工作。现在算出我在OP missing}中输入的一个错误。这可能导致没有输出。试图找出它。错误消失了,数据赋值后缺少逗号,大括号,但在您的编辑下仍然没有打印。我在stackoverflow和一些地方搜索更喜欢的线程,他们使用类似“$\u GET['data']”的格式,而有些地方使用$\u GET['humArray']。真让人困惑。非常感谢你的帮助。我会考虑实施这种方式,因为开始的东西。需要研究/获取更合适的方法。我认为@Cbroe也对我的方法持保留态度。当我使用当前代码时,就使用它。我想我会坚持这种方式,即它应该是什么样子。不幸的是,我一开始就走错了路。非常感谢您发布代码。在PHP中,使用curl很容易。尽管我必须获取特定的数据类型。我在这方面做得更多,但可能需要更多的帮助。我想我会接受你的回答,并为我面临的任何问题打开一条新的思路。
<?php

   if (isset($_GET['humArray'])){
       $Humidity = $_GET['humArray'];
       $Temprature = $_GET['temArray'];
       echo "Hum".$Humidity."Temp".$Temprature;
   } 
?>
print_r($Humidity);
print_r($Temprature);
$.when( $.ajax({
    type: 'POST',
    url: 'fetchWeatherRequest.php',
    dataType: 'json'
  })
).then( function( response ) { 
    // Code so render results on index.php;
});
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://cors.io/?http://api.holfuy.com/live/?s=759&pw=h1u5l4kka&m=JSON&tu=C&su=m/s",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Cache-Control: no-cache"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  // Here code to save $response into database;

  echo $response;
}