我如何使用 fetch API 从 php 获取多个变量

How do i use fetch API to get multiple variables from php

我正在尝试使用 Javscript 提取 API 从我的遥控器 php 获取多个变量,\ 这是我的 php

<?php 

include 'config.php';
//$email = $_GET['email'];
try {
    $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
    $sql = "SELECT name, phone FROM searchResults WHERE email=:email";
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $dbh->prepare($sql);  
    $stmt->bindParam(":email", $_GET['email']);
    $stmt->execute();
    $row = $stmt->fetch();
    $name = $row[0];
    $number =  $row[1];
    echo $name;
    echo $number;
} catch(PDOException $e) {
    echo '{"error":{"text":'. $e->getMessage() .'}}'; 
}

?>

这是我的javascript

var email = appSettings.getString("email");
  var url = "https://adekunletestprojects.000webhostapp.com/skog/getMyname.php?search=" + encodeURIComponent(email);
  fetch(url).then((response) => response.text()).then((res) => {
    viewModel.set("myName", res.name);
    alert(res.name);
    appSettings.set("myNme", res.name);
    appSettings.set("myNumber", res.number);
  }).catch((err) => {

  });

请帮忙

您应该 return 一个 JSON 对象中的所有变量。

<?php 

include 'config.php';
//$email = $_GET['email'];
try {
    $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
    $sql = "SELECT name, phone FROM searchResults WHERE email=:email";
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $dbh->prepare($sql);  
    $stmt->bindParam(":email", $_GET['email']);
    $stmt->execute();
    $row = $stmt->fetch();
    $name = $row[0];
    $number =  $row[1];
    echo json_encode(['name' => $name, 'number' => $number]);
} catch(PDOException $e) {
    echo echo json_encode(['error' => ['text' => $e->getMessage() ]]); 
}
?>

然后用response.json()解码成JavaScript。

var email = appSettings.getString("email");
  var url = "https://adekunletestprojects.000webhostapp.com/skog/getMyname.php?search=" + encodeURIComponent(email);
  fetch(url).then((response) => response.json()).then((res) => {
    if (!res.error) {
        viewModel.set("myName", res.name);
        alert(res.name);
        appSettings.set("myNme", res.name);
        appSettings.set("myNumber", res.number);
    } else {
        alert(res.error.text);
    }
  }).catch((err) => {

不要回显变量,而是始终使用 JSON。

echo $name;
echo $number;

变成

echo json_encode(["error"=>,"","name" => $name,"number"=>$number]);

也为你的错误做同样的事情:

echo json_encode(['error' => $e->getMessage()]);