Php 返回html标记的Ajax登录页面

Php 返回html标记的Ajax登录页面,php,ajax,Php,Ajax,我正在尝试使用ajax和php创建一个简单的登录页面。它返回的响应文本如下所示: 答复正文: <html> <head> </head> <body> </body> </html> success 为什么会这样?我怎样才能去掉这些html标签呢。 我的代码是: <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/j

我正在尝试使用ajax和php创建一个简单的登录页面。它返回的响应文本如下所示: 答复正文:

<html>
<head>
</head>
<body>
</body>
</html>
success
为什么会这样?我怎样才能去掉这些html标签呢。 我的代码是:

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.js"></script>
</head>
<body>
<form action="" method="post" id="myform">
<label>Username</label><input type="text" id="username" name="user">
<label>Password</label><input type="text" id="password" name="pwd">
<input type="button" onclick="sub()" value="Submit">
</form>
</body>
</html>
            <script>
            function sub()
            {
            var email=$("#username").val();
            var password=$("#password").val();
            var dataString = 'email='+email+'&password='+password;
            if($.trim(email).length>0 && $.trim(password).length>0)
            {
            $.ajax({
            type: "POST",
            dataType: "text",
            url: "home1.php",
            data: "username=" + $("#username").val()+"&password=" +    $("#email").val(),
            cache: false,
            success: function(status){
                alert(status);
            }
            });

            }
                        }
</script>
home1.php:

<?php
include("db.php");
session_start();
if(isSet($_POST['email']) && isSet($_POST['password']))
{
$email=mysqli_real_escape_string($db,$_POST['email']); 
$password=mysqli_real_escape_string($db,$_POST['password']); 

$result=mysqli_query($db,"SELECT user_id FROM customers WHERE email1='$email' and password='$password'");
$count=mysqli_num_rows($result);

$row=mysqli_fetch_array($result,MYSQLI_ASSOC);
if($count==1)
{
$_SESSION['id']=$row['user_id'];
echo "success";
}
}
?>

如果希望alertstatus正常工作,home1.php页面必须返回文本

<?php
// home1.php

    Header('Content-Type: text/plain;charset=utf8');
    die("This is the response");
这些标记可能是由于您没有正确设置内容类型而被web服务器插入的

<?php
// home1.php

    Header('Content-Type: text/plain;charset=utf8');
    die("This is the response");
在home1.php中,从一个仅包含以下内容的文件开始:

<?php
    $response = array(
        'status'  => 'success',
        'message' => 'Everything is OK!',
    );
    Header('Content-Type: application/json;charset=utf8');
    die(json_encode($response));

把你的函数改成这个

$('#myform').submit( function(event){
  event.preventDefault();

  var username = $.trim($("#username").val()),
      password = $("#password").val();//don't trim passwords

  if (username.length > 0 && password.length > 0) {
    $.ajax({
      method: "POST",
      url: "home1.php",
      data: { pUsername: username, pPassword: password }
    }).done(function( data ) {
      alert(data); //shows all data received from home1.php
    });
  }
});

如果您的代码格式正确,人们可能会提供更好的帮助。您可能还希望包含PHP文件的源代码,因为它是返回标记的内容。这里与PHP有什么关系?另外,任何地方都没有电子邮件ID。@Fred ii-我猜home1.php的用法在home1.php页面中是什么?这就是导致此问题的原因。尝试添加标题的内容类型:text/plain;字符集=utf8';这是回应;仍然不起作用。甚至用json尝试过。。那里也不走运。
$('#myform').submit( function(event){
  event.preventDefault();

  var username = $.trim($("#username").val()),
      password = $("#password").val();//don't trim passwords

  if (username.length > 0 && password.length > 0) {
    $.ajax({
      method: "POST",
      url: "home1.php",
      data: { pUsername: username, pPassword: password }
    }).done(function( data ) {
      alert(data); //shows all data received from home1.php
    });
  }
});