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

问题描述 投票:0回答:2

im试图使用Javscript fetch 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) => {

  });

帮忙

javascript php fetch-api
2个回答
3
投票

你应该返回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) => {


1
投票

而不是呼应变量,总是使用JSON。

echo $name;
echo $number;

变成

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

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

echo json_encode(['error' => $e->getMessage()]);
© www.soinside.com 2019 - 2024. All rights reserved.