JSON

使用 Perl、jQuery、Ajax、JSON 和 MySQL 实现简单的登录(2)

字号+ 作者:H5之家 来源:H5之家 2017-02-18 18:02 我要评论( )

如果脚本调用成功,那么对它的响应进行测试。如果响应变量 data 没有包含错误消息,那么用户 id 和成功消息都将显示,用户 id 是通过 Perl 脚本从 users 表取回的。如果成功,代码样例将隐藏起来,并只显示 div 标

如果脚本调用成功,那么对它的响应进行测试。如果响应变量 data 没有包含错误消息,那么用户 id 和成功消息都将显示,用户 id 是通过 Perl 脚本从 users 表取回的。如果成功,代码样例将隐藏起来,并只显示 div 标记。

完整的 JavaScript 代码清单 3. login.js

$(document).ready(function(){ $("form#loginForm").submit(function() { // loginForm is submitted var username = $('#username').attr('value'); // get username var password = $('#password').attr('value'); // get password if (username && password) { // values are not empty $.ajax({ type: "GET", url: "/cgi-bin/login.pl", // URL of the Perl script contentType: "application/json; charset=utf-8", dataType: "json", // send username and password as parameters to the Perl script data: "username=" + username + "&password=" + password, // script call was *not* successful error: function(XMLHttpRequest, textStatus, errorThrown) { $('div#loginResult').text("responseText: " + XMLHttpRequest.responseText + ", textStatus: " + textStatus + ", errorThrown: " + errorThrown); $('div#loginResult').addClass("error"); }, // error // script call was successful // data contains the JSON values returned by the Perl script success: function(data){ if (data.error) { // script returned error $('div#loginResult').text("data.error: " + data.error); $('div#loginResult').addClass("error"); } // if else { // login was successful $('form#loginForm').hide(); $('div#loginResult').text("data.success: " + data.success + ", data.userid: " + data.userid); $('div#loginResult').addClass("success"); } //else } // success }); // ajax } // if else { $('div#loginResult').text("enter username and password"); $('div#loginResult').addClass("error"); } // else $('div#loginResult').fadeIn(); return false; }); });

Perl

对于一个非常简单的实现,Perl 只需要三个模块;CGI、DBI 和 DBD::mysql。通过使用 CGI 模块,Perl 脚本获取 Ajax 发送的 username 和 password 值。然后脚本连接到数据库,发出查询并对给定的值选取用户 id。根据查询结果,JSON 响应将由一个错误消息或一个成功消息和用户 id 构建。Perl 脚本将内容类型设置为 application/json 并使用 JSON 字符串响应 Ajax,字符串由 jQuery 在 data 变量中获取。

完整的 Perl 代码清单 4. login.pl

#!/usr/bin/perl -T use CGI; use DBI; use strict; use warnings; # read the CGI params my $cgi = CGI->new; my $username = $cgi->param("username"); my $password = $cgi->param("password"); # connect to the database my $dbh = DBI->connect("DBI:mysql:database=mydb;host=localhost;port=2009", "mydbusername", "mydbpassword") or die $DBI::errstr; # check the username and password in the database my $statement = qq{SELECT id FROM users WHERE username=? and password=?}; my $sth = $dbh->prepare($statement) or die $dbh->errstr; $sth->execute($username, $password) or die $sth->errstr; my ($userID) = $sth->fetchrow_array; # create a JSON string according to the database result my $json = ($userID) ? qq{{"success" : "login is successful", "userid" : "$userID"}} : qq{{"error" : "username or password is wrong"}}; # return JSON string print $cgi->header(-type => "application/json", -charset => "utf-8"); print $json;

代码验证

要构建有效的 JSON 响应,可能需要使用一个 JSON 验证器。
参见 ,了解有关 JSON 验证的更多消息。

显示生成的 JSON 字符串

可以在您的浏览器中检查 JSON 字符串:

注意

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • jq向webApi交付post json数据

    jq向webApi交付post json数据

    2017-02-19 11:02

  • Json数据格式的使用方法入门教程

    Json数据格式的使用方法入门教程

    2017-02-16 16:02

  • JSON解析详细文档

    JSON解析详细文档

    2017-02-16 16:01

  • 说说“当代 Web 的 JSON 劫持技巧” EVILCOS

    说说“当代 Web 的 JSON 劫持技巧” EVILCOS

    2017-02-14 17:02

网友点评
N