サーバーはどのようにしてクライアントにデータを送信するのでしょうか?

WBOY
リリース: 2016-06-23 13:58:07
オリジナル
1757 人が閲覧しました

post メソッドを使用してユーザー名とパスワードをサーバーに送信します。PHP を使用して、この動作に対するサーバーの応答を実装し、ログインの成功を示す文字列を返したいと考えています。クライアントはこの文字列をどのように取得すればよいでしょうか?


ディスカッションに返信 (解決策)

w3school を見に行く

デモを作成し、username=fdipzone,password=123456 と入力すると、サーバーは成功を返します。それ以外の場合は失敗を返します。
client.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head>  <meta http-equiv="conent-type" content="text/html; charset=utf-8">  <title> client post</title>  <script src="//code.jquery.com/jquery-1.11.0.min.js"></script> </head> <body>  <script type="text/javascript">  function fsubmit(){	  $.post("server.php", { username: $("#username").val(), password: $("#password").val() },function(ret){		if(ret.success==true){			alert('login success');		}else{			alert('login fail');		}	  },'json');  }  </script>  <p>username:<input type="text" id="username"></p>  <p>password:<input type="text" id="password"></p>  <p><input type="button" value="submit" onclick="fsubmit()"></p>  </body></html>
ログイン後にコピー

server.php
<?php$username = isset($_POST['username'])? $_POST['username'] : '';$password = isset($_POST['password'])? $_POST['password'] : '';$ret = array();if($username=='fdipzone' && $password=='123456'){    $ret['success'] = true;}else{    $ret['success'] = false;}echo json_encode($ret);?>
ログイン後にコピー

ajax?まず、サーバーに投稿する方法について説明します。

<script type="text/javascript">function submits(){// 实现账户与密码向服务器的发送// 服务器地址中传递的有参数a=1// 从服务器端接收数据num// 对num进行乘以2运算,再将结果发送给服务器端}</script><form id="loginform" action="./login.php?a=1" method="post" >username<input type="text" id="username" name="account">password<input type="password" id="pwd" name="password" ><input type="button" onclick="submits();"></form>
ログイン後にコピー


<?phpif($_POST['a'] == 1){$uName = $_POST['account'];$uPassword = $_POST['password'];// 比较数据库中信息(省略)// 向客户端传递数据num// 获得客户端发送来的运算结果}?>
ログイン後にコピー



は、クライアントが最初にサーバーにデータを送信し、次にサーバーがクライアントにデータで応答し、最後にクライアントが応答データの演算結果をサーバーに送信することを認識します。
データ交換プロセスは合計 3 ラウンドあります。これを実装するにはどうすればよいですか?

ログインボタンを 1 回クリックすることで、3 つのプロセスが完了することを願っています。

ボタンを押してメソッドを呼び出し、そのメソッド内の他のメソッドをコールバックするだけです。プロセスが完了するまで。
このように書くこともできます。

function fsubmit(){
$.post("server.php", { ユーザー名: $("#username").val(), パスワード: $("#password").val() },function( ret){
alert('ログイン失敗');
}

function doSecondFunc(){
// do sth
ある場合は、ここで 3 番目の関数を再度呼び出すことができます
}

できる「server.php?a= 1」などのパラメータをアドレスに追加する必要がありますが、問題ありませんか?


「server.php?a=1」などのパラメータをアドレスに追加できますか?

はい、しかし、

<!DOCTYPE html><html><head>    <title></title>    <script            src="http://code.jquery.com/jquery-latest.js"></script></head><body><script>    $(document).ready(function () {        $.post('test.php?gettest=1', {"test": "test"}, function (data) {            alert(data.get);            alert(data.post);        }, 'json')    })</script></body></html>
ログイン後にコピー

$array = array(    'get' => $_GET['gettest'],    'post' => $_POST['test'],);echo json_encode($array);
ログイン後にコピー


を取得するには $_GET['a'] を使用する必要があります

午後中ずっと取り組んだ後、ようやく理解できました、ありがとう

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート