使用URLSearchParams传递数据是PHP后端中的其他内容

时间:2017-12-16 12:21:04

标签: php axios

我试图通过调用后端来创建异步验证。我需要使用let params = new URLSearchParams(); params.append('email', registerEmail);传递数据,因为PHP没有看到$_POST[email]

我附加到params的

registerEmail123@123.pl

    let params = new URLSearchParams();
    params.append('email', registerEmail);

    return axios.post('/api/auth/checkUnique.php', params, axiosConfig)
        .then(res => {
            console.log('true');
            console.log(res);
            return true;
        })
        .catch(res => {
            console.log('false');
            console.log(res);
            return false;
        });

在后端,我选择使用此值并使用var_dump()选择do db。

var_dump('email is: ');
var_dump($_POST['email']);

$query = "
    SELECT 
      * 
    FROM 
      " . $this->table_name . " 
    WHERE 
      nick = ?
    OR
      email = ?
  ";

// prepare query statement
$stmt = $this->conn->prepare($query);

// bind params
$stmt->bindParam(1, $nick);
$stmt->bindParam(2, $email);

// execute query
$stmt->execute();

//count if there is any
$num = $stmt->rowCount();

if ($num > 0)
{
    return false;
}
else
{
    return true;
}

虽然我确信在我的数据库中我有一封电子邮件123@123.pl但它找不到它并且它返回真实。

第一行中的

var_dump()函数返回data: "string(10) \"email is: \"\nstring(25) \"[object HTMLInputElement]\"\n"。我认为这不是我想要的123@123.pl,这就是为什么我的SELECT无法找到任何记录。

为什么?

1 个答案:

答案 0 :(得分:1)

就像你说它返回object HTMLInputElement, 那不好。

return axios.post('/api/auth/checkUnique.php', params, axiosConfig)

PHP希望获得<input name='email'>或类似示例params必须为json

{email: some@email.com}

还有你的问题。