首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么ajax不将输入字段值传递给php解析器?

为什么ajax不将输入字段值传递给php解析器?
EN

Stack Overflow用户
提问于 2018-06-09 06:28:06
回答 2查看 32关注 0票数 0

我正在建立一个帐户注册页面,检查用户的电子邮件地址与数据库,以确保所说的用户没有创建重复的帐户。使用ajax报告数据库中是否存在电子邮件。当在表格中输入电子邮件地址时,我总是会得到“电子邮件是ok的”。这意味着它不存在于数据库中。然而,这是不正确的。如果我在php解析器中将电子邮件指定为变量,比如$email="email@exists.com“,那么它实际上会返回正确的结果。我猜想解析器没有从表单中获得值来添加到查询中。你知道为什么这不管用吗?

代码语言:javascript
复制
<input type="text" id="password" class="form-control" name="password" value="" pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}" placeholder="password" autocomplete="off" required />

Ajax:

代码语言:javascript
复制
    <script>
function ajax_post(){
    // Create our XMLHttpRequest object
    var hr = new XMLHttpRequest();
    // Create some variables we need to send to our PHP file
    var url = "email_check.php";
    var fn = document.getElementById("firstname").value;
    var ln = document.getElementById("lastname").value;
  var e = document.getElementById("email").value;
  var pwd = document.getElementById("password").value;
    var vars = "firstname="+fn+"&lastname="+ln;
    hr.open("POST", url, true);
    // Set content type header information for sending url encoded variables in the request
    hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    // Access the onreadystatechange event for the XMLHttpRequest object
    hr.onreadystatechange = function() {
        if(hr.readyState == 4 && hr.status == 200) {
            var return_data = hr.responseText;
            document.getElementById("status").innerHTML = return_data;
        }
    }
    // Send the data to PHP now... and wait for response to update the status div
    hr.send(vars); // Actually execute the request
    document.getElementById("status").innerHTML = "processing...";
}
</script>

和解析器:

代码语言:javascript
复制
<?php

include 'db.php';





$test= $_POST['email'];


  $sql="SELECT email FROM users where email = '$test' LIMIT 1";
   $result = mysqli_query($conn,$sql);

if(mysqli_num_rows($result) > 0)
{
echo 'email is in use.';
exit();

} else if(mysqli_num_rows($result) < 1){
echo 'email is ok';
  exit();
}


  ?>
EN

回答 2

Stack Overflow用户

发布于 2018-06-09 06:31:26

在发送请求时,您没有将电子邮件字段添加到您的vars中,如下所示:

代码语言:javascript
复制
var vars = "firstname="+fn+"&lastname="+ln;
票数 0
EN

Stack Overflow用户

发布于 2018-06-09 09:53:00

您需要向解析器发送电子邮件,而不是名字/姓氏

代码语言:javascript
复制
var vars = "email="+e;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50769143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档