如何使用ajax和jquery从php Web服务返回简单文本[重复]

Posted

技术标签:

【中文标题】如何使用ajax和jquery从php Web服务返回简单文本[重复]【英文标题】:How to return simple text from php web service using ajax and jquery [duplicate] 【发布时间】:2016-04-21 23:07:48 【问题描述】:

我想使用 php web 服务来完成这个简单的登录任务。我只是想根据我在我的 php 中回显的文本结果来验证用户名和密码。

PHP:

<?php
    // Include confi.php
    include_once('confi.php');

    $found = false;
    $email = isset($_POST['email']) ? mysql_real_escape_string($_POST['email']) : "";
    $password = isset($_POST['password']) ? mysql_real_escape_string($_POST['password']) : "";
    if(!empty($email) && !empty($password))
        $login=mysql_num_rows(mysql_query("select * 
                                           from `login` 
                                           where `email`='$email' 
                                           and `password`='$password'"));
        $result =array();
        if($login!=0)
    
    echo "success";
    
else

echo "failed";


    @mysql_close($conn);

    /* Output header */
    header('Content-type: text/plain');


?>

如果用户名和密码匹配;它显示成功。

jQuery

 <script>

        $(function () 

            $("#logon").click(function () 
                var email = $("#username").val();
                var password = $("#pass").val();
                var dataString = "email=" + email + "&password=" + password;
                if ($.trim(email).length > 0 & $.trim(password).length > 0) 
                    $.ajax(
                        type: "POST",
                        url: "http://*****/login.php",
                        data:dataString,
                        crossDomain: true,
                        cache: false,
                        beforeSend: function ()  $("#logon").html('Connecting...'); ,
                        success: function (data) 
                            if (data == "success") 
                                alert(result+"You are in");
                                localStorage.login = "true";
                                localStorage.email = email;
                                window.location.href = "test.html";   
                            
                            else if (data == "failed") 
                                alert("Login error");
                                $("#logon").html('Login');
                              
                        
                    );
                
            );
        );
    </script>

【问题讨论】:

当你打印像alert(data);这样的返回字符串时,输出是什么? 无输出。到那个地步还不是晚上。 :// 你错过了 ajax 中的数据类型 html @devpro – dataType 是可选的。如果你省略它,jQuery 将只使用 Content-Type 响应头。 你有crossDomain: true,(它可能不会像你想象的那样做)和一个绝对URI。您是否正在提出跨域请求?您是否在浏览器的开发人员工具中查看过控制台?您没有抱怨缺少 Access-Control-Allow-Origin 标头的错误消息吗? 【参考方案1】:

您缺少 json 函数,您必须对要发送回请求的内容进行编码

   <?php
    /*output the header here*/
     header("Content-Type: application/json");

            // Include confi.php
              include_once('confi.php');
              $response['Status'];//      declare a variable to store msg
              $found = false;
              $email = isset($_POST['email']) ? 
             mysql_real_escape_string($_POST['email']) : "";
                   $password = isset($_POST['password']) ? 
             mysql_real_escape_string($_POST['password']) : "";
              if(!empty($email) && !empty($password))
           $login=mysql_num_rows(mysql_query("select * 
                                       from `login` 
                                       where `email`='$email' 
                                       and `password`='$password'"));
                $result =array();
               if($login!=0)
        
           $response['Status']=""success";
        
     else
        
            $response['Status']="failed";
         
       
@mysql_close($conn);

在这里进行更改

 $result= json_encode($message);
  echo $result;

?>

在你的 jquery 数据到 ajax 函数中添加

            dataType:"json",
        success: function (data) 
               if (data.Status == "success")     //here check the condition
                            alert(result+"You are in");
                            localStorage.login = "true";
                            localStorage.email = email;
                            window.location.href = "test.html";   
                        
              else if (data.Status== "failed")  //here check the condition
                            alert("Login error");
                            $("#logon").html('Login');
                          
                    

【讨论】:

问题中的 PHP 表示它正在发回纯文本。 javascript 中没有任何内容表明它需要 JSON。 jQuery会将纯文本解析为纯文本,这很好。 在这种情况下,返回 html 或 json 实现相同的功能并不重要

以上是关于如何使用ajax和jquery从php Web服务返回简单文本[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何实现一个 jquery ajax 表单,它通过 php 请求从 web api 请求信息?

使用 jQuery 和 AJAX 的跨域 PHP 调用

如何使用 Web 服务和 jQuery Ajax 启用 CORS

如何从 Java Rest Web 服务返回 ajax 值?

使用 JSON 从 AJAX 和 JQuery 调用简单的 Web 服务(.asmx 文件) - 解析错误

如何使用 jQuery Ajax 调用从 ASP.NET Web Api 下载 CSV 文件