首页 > 解决方案 > 我正在尝试在 javascript 中获取价值,以 JSON 格式以 PHP 形式返回它

问题描述

我创建了一个日期选择功能,在底部显示选择(第二个绿色框)。我现在希望能够在 PHP 中检索用户的选择,然后以 JSON 格式发送。提前感谢您的任何建议或帮助。

在此处输入图像描述

这是我的代码:

    function setToSelected(me){
const x = document.querySelector("span.active");
if (x !== null) {
x.classList.remove("active");
}
me.className='active';
console.log(me.id);
var dateselected=me.id.split('-')
var day=dateselected[0].split('_')[0]
var daynum=dateselected[0].split('_')[1]
var month=dateselected[0].split('_')[2]
switch(day){
    case 'lun':
        day='Lundi'
    break;
    etc...
default:
console.log("erreur conversion day")
}

switch(month){
    case 'jan':
        month='Janvier'
    break;
    case 'fev':
        month='Fevrier'
    break;
    
default:
console.log("erreur conversion month")
}
document.getElementById("dateselected").innerHTML = "Selected restart date : "+day+" "+daynum+" "+month+" à "+dateselected[1]+"h"
}

});

标签: javascriptphpjson

解决方案


所以我们有两种技术在这里工作,Javascript 在你的前端工作,php 在服务器端工作。要在 php 中检索数据服务器端,您需要从前端向 php 页面发出 post 请求,因为 php 仅在服务器端执行,而不是在前端执行。步骤如下

  1. 在 javascript 中获取您的日期信息
  2. 准备要发送的数据
  3. 通过 xhr 请求将数据发送到 php 页面

例子

// Step 1
 var selecteddate = day+" "+daynum+" "+month+" "+dateselected[1]+"h";
// Now we have our javascriptobject called selecteddate;

// set target php page to post to
  var url = "datereceiver.php";

// Step 2 create a post object 
  var dataToSend = {"fontenddate": selecteddate };   

// Step 3 set request paramaters
  var xhr = new XMLHttpRequest();
  xhr.open("POST", url);
  xhr.setRequestHeader("Accept", "application/json");
  xhr.setRequestHeader("Content-Type", "application/json");
 // send request
  xhr.send(selecteddate);

 // set callback function to capture response from your php page(server)
  xhr.onreadystatechange = function () {
  if (xhr.readyState === 4) {
 // check response code
    console.log(xhr.status);
 // get your response from your php page
    console.log(xhr.responseText);
   }};

在 php 方面,您的 (datereceiver.php) 页面可能类似于

<?php 
if($_SERVER["REQUEST_METHOD"] == "POST") { 
    $yourselecteddate = $_POST['frontenddate'];
    $response = "date received";
   } 
else{
     $response = "bad request";
}
 // set response headers 
header('Content-type: application/text'); 
 echo $response;
?>

推荐阅读