当前位置: 首页 > 编程日记 > 正文

怎样在javascript函数中将变量传递给服务端脚本程序?

怎样在javascript函数中将变量传递给服务端脚本程序?

(有朋友问上述问题, 愿把结论分享给大家).

摘 要:
  服务器端脚本运行时, 它只会解释执行<% %>或<?php ?%> 之间的脚本语句, 它会把客户端脚本视作
普通文本. 而客户端脚本运行时, 服务器端脚本又是不可见的(客户浏览器上只有服务器端脚本的执行结果).
  所以, 服务器端脚本和客户端脚本不能相互直接操作, 也不能相互直接调用.

  客户端脚本与服务器脚本交换数据只能通过 GET和 POST 方法(即: URL?查询 和 post 方法)相互传递数据,
  客户端脚本还可以通过Ajax, 先异步通信请求服务器动态获取查询结果, 然后再分析查询/输出结果 ..



要解决这个问题, 先必须弄清三个概念 :
  a. 客户端脚本
  b. 服务端脚本
  c. B/S 模式中 " 客户端脚本" 与 "服务端脚本" 的通信原理.

1. 客户端脚本
  客户端脚本主指运行在客户浏览器(Browser)端的脚本程序, 如 Javascript, VbScript,
  通常将它们通过<script></script>嵌入在 html 源程序中, 由浏览器解释执行 ..

2. 服务器端脚本
  服务器端脚本主指运行在服务器端(Server)的脚本程序, 如 perl, php, csp, asp(vbscript, javascript),
  它们通常通过<% %>或<?php ?>等嵌入在 html 源程序中或直接运行输出html文件,
  这些脚本程序由服务器的脚本解释器( 或编译器)解释(或编译)执行.

3. 区别/联系
  客户端的解释器是由浏览器提供, 不必另外安装. 服务器端脚本解释(编译器)由脚本开发商提供,
  一般需要另外安装和配置(perl, php, csp, asp等的开发/运行环境).

  另外, 在 ASP 中虽然 VbScript JavaScript 既可以作为客户端脚本也可以作为服务器端脚本,
  但它们除嵌入在html源文件中的方式不同(见上)外, 两端的函数库等也略有不同.
  
4. B/S 模式中 "客户端脚本" 与 "服务端脚本" 的通信原理
  B/S 模式 (Browser/Server) 中连接客户端与服务器的桥梁是 HTTP 协议. HTTP提供了两种最常用的数据
  传送方式即: GET和POST (通常 html 中的超级链接都是通过 GET 方法提交数据, 通过表单(form)提供的
  数据可以是 POST 方法也可以是 GET).

  从上面的原理可以看出, "客户端脚本" 与 "服务端脚本" 如需互相交换数据, 也只通过 GET方法或 POST
  方法进行(即 URL或表单). 另外, 除直接通过 URL和表单进行数据传递外, 现在你还可以通过流行 Ajax
  技术通过 Javascript与 WebServer 进行异步通信 (它的通信方式类似URL或表单)

5. 小结,
  服务器端脚本运行时, 它只会解释执行<% %>或<?php ?%> 之间的脚本语句, 它会把客户端脚本视作
  普通文本. 而客户端脚本运行时, 服务器端脚本又是不可见的(客户浏览器上只有服务器端脚本的执行结果).
  所以, 服务器端脚本和客户端脚本不能相互直接操作, 也不能相互直接调用.

  客户端脚本与服务器脚本交换数据只能通过 GET和 POST 方法(即: URL?查询 和 post 方法)相互传递数据,
  客户端脚本还可以通过Ajax, 先异步通信请求服务器动态获取查询结果, 然后再分析查询/输出结果 ..


6. 实例:
  下面是一个Javascript 与 CSP(The C Language Service Page) 一起运行示例, 你可以轻易改成用其它语言的实现:
  (可直接运行: 把 test.csp 拷贝到 cgi-bin 目录并给预执行权限, 在浏览器输入 http://ip/cgi-bin/test.csp)
  
  说明:
  Line4, Line11 是两条 C 语句, Line4 使用 isblankstr()函数判断文本框 "textbox" 中是否输入了数据,
  如果输入了数据将输出 Line5-Line9 的 Javascript. 浏览器运行脚本程序, 并弹出对话框: "你输入的是icon_mad.gifxx".

test.csp 源文件(见附件):

CODE:
[Copy to clipboard]
1   #!/usr/bin/cspengine
2   <html>
3   <head>
4   <META http-equiv=Content-Type content="text/html; charset=gb2312">
5   <% if (!isblankstr(G("textbox"))) { %>
6   <script language=JavaScript>
7   <!--
8       alert("你输入的是: " + "<% =G("textbox") %>");
9       location.href = "<% =thisCgiPrefix(NULL) %>";
10  -->
11  </script>
12  <% } %>
13  </head>
14  <body>
15  <form method=post action="<% =thisCgiPrefix(NULL) %>">
16   请输入: <input type=text name=textbox><p>
17   <input type=submit name=submit value="提交"><br>
18  </form>
19  </body>
20  </html>
运行结果1, 等待输入:

CODE:
[Copy to clipboard]
<html>
<head>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
</head>
<body>
<form method=post action="?!=/cgi-bin/gnext.csp&">
请输入: <input type=text name=textbox><p>
<input type=submit name=submit value="提交 "><br>
</form>
</body>
</html>
运行结果2, 输入提交后 :

CODE:
[Copy to clipboard]
<html>
<head>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<script language=JavaScript>
<!--
    alert("你输入的是: " + "abc123");
    location.href = "?!=/cgi-bin/gnext.csp&";
-->
</script>
</head>
<body>
<form method=post action="?!=/cgi-bin/gnext.csp&">
请输入: <input type=text name=textbox><p>
<input type=submit name=submit value="提交 "><br>
</form>
</body>
</html>

相关文章:

android studio val,Kotlin学习笔记之const val与val

const的使用const 必须修饰valconst 只允许在top-level级别和object中声明&#xff0c;使用方式如下&#xff1a;const val THOUSAND 1000object myObject {const val constNameObject: String "constNameObject"}class MyClass {companion object Factory {const …

算法开发人员的安身之本:如何将机器学习与各行各业进行深度结合

只讲技术&#xff0c;拒绝空谈&#xff01;2018 AI开发者大会精彩议程曝光》 2018 AI开发者大会 2018 AI开发者大会是一场由中美人工智能技术高手联袂打造的AI技术与产业的年度盛会&#xff01;是一场以技术落地为导向的干货会议&#xff01;大会设置了10场技术专题论坛&#x…

android intent email,Android Email Intent

问题Ive set up two buttons. One opens the compose sms intent and the other opens the compose email intent. The sms intent works fine but the email button doesnt respond. Ive created a categorychooser but that doesnt show up....UNTIL I click the sms buttonT…

C#实现的18位×××格式验证算法

18位标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》中做了明确的规定。 GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版&#xff0c;其中指出将原标准名称"社会保障号码"更名为"公民身份号码"&#xff…

大家都收藏了的最新开源项目Top12!CV、NLP、机器学习一应俱全

参加 2018 AI开发者大会&#xff0c;请点击大会官网 译者 | 林椿眄、Jane 责编 | Jane 出品 | AI科技大本营 【导读】作者整理了近期最新发布及更新的 12 个非常有学习和收藏意义的开源项目。这些项目中包括基于 TensorFlow 的强化学习框架&#xff1b;可以对数据进行结构化处…

CentOS6.5下Gunicorn+Django+nginx部署的过程

2019独角兽企业重金招聘Python工程师标准>>> 本文假设你已经在CentOS下使用Python manage.py runserver 0.0.0.0:8080&#xff0c;能够顺利跑起来&#xff0c;并且被外网访问到了。项目名假设为&#xff1a;blog_project 安装nginx yum -y install nginx 如果安装不…

c7pro android7,三星c7pro和iphone7哪个值得买?三星Galaxy c7 pro和苹果iphone7区别对比详细评测...

三星c7 pro介绍&#xff1a;三星C7 Pro三星C7 Pro可以看作是去年底上市的三星C9 Pro低配版&#xff0c;屏幕变小了&#xff0c;硬件配置也有所降低&#xff0c;不过配备了骁龙625升级版的骁龙626处理器&#xff0c;硬件方面也是颇具看点的&#xff0c;以下是手机详细参数。三星…

NIPS2018 | 腾讯AI Lab入选20篇论文,含2篇Spotlight

1.7亿条数据&#xff0c;比胡同和撸串更真实的北京35岁IT老兵&#xff0c;转型AI&#xff0c;我做错了吗&#xff1f;厉害了&#xff0c;天刚一冷程序员就都换上了衬衫……如何用Python&Fabric打造区块链“淘宝”商城Python 3 字符串中的 STR 和 Bytes 究竟有什么区别&…

windows查看端口占用以及关闭相应的进程

开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选"查看"-"选择列" 经常&#xff0c;我们在启动应用的时候发现系统需要的端…

bzoj 2730: [HNOI2012]矿场搭建——tarjan求点双

Description 煤矿工地可以看成是由隧道连接挖煤点组成的无向图。为安全起见&#xff0c;希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处。于是矿主决定在某些挖煤点设立救援出口&#xff0c;使得无论哪一个挖煤点坍塌之后&#xff0c;其他挖煤点的工人都有…

华为鸿蒙手机官网价格表,曝下半年华为将推出两款鸿蒙手机:国内独享,价格良心...

虽然发声表示自己将全力支持安卓系统&#xff0c;维护安卓生态&#xff0c;但又推出了鸿蒙操作系统&#xff0c;余承东还表示鸿蒙系统取代安卓系统只需要1-2天即可。从这番表态来看&#xff0c;华为应该后续是要安卓鸿蒙两手抓了。安卓系统照常使用&#xff0c;而鸿蒙系统也会进…

PocketPC 全屏的实现

在windows mobile 5.0中实现全屏的方法&#xff0c;和隐藏SIP的方法差不多&#xff0c;只要稍稍改一下就可以了&#xff1a;::CommandBar_Show(m_hWnd, FALSE);//隐藏菜单 ::SHFullScreen(m_hWnd,SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON);//隐藏taskbar与sipSetForegroundWindo…

AI时代,谈数据分析时我们要谈些什么?

参加 2018 AI开发者大会&#xff0c;请点击大会官网 说起数据分析&#xff0c;你能想到的是什么&#xff1f; 根据维基百科的定义&#xff0c;数据分析是一类统计方法&#xff0c;其主要特点是多维性和描述性。有些几何方法有助于揭示不同的数据之间存在的关系&#xff0c;并绘…

清瘦的记录者: 一个比dbutils更小巧、好用的的持久化工具

https://gitee.com/bitprince/memory 1. 概述 1.1 连接、语句和结果集 从JDBC的规范上看&#xff0c;其对数据访问层有相当简洁的抽象&#xff1a;1、连接(connection) 2、语句(statement)、3结果集(result set)。我们对数据库做的事情无非&#xff1a;连接数据库&#xff0c;执…

html 显示消息数量,html实现消息按钮上的数量角标的实例详解

这篇文章主要介绍了html在消息按钮上增加数量角标的实现代码,需要的朋友可以参考下html代码&#xff1a;消息4css代码&#xff1a;/*角标 */.ii{display: none;background: #f00;border-radius: 50%;width: 20px;height: 20px;top: 5px;right: 0px;position: absolute;text-ali…

为什么让A.I.“顶天立地”需要6个多月?

在A.I.的发展中&#xff0c;专注技术or专注应用&#xff1f;这从来不是一道选择题。“技术顶天&#xff0c;应用落地&#xff0c;希望全社会的开发者可以和我们一起开放创新、共建A.I.生态。”2018年3月22日&#xff0c;在科大讯飞主办的「AI大学未来课栈上海栈」&#xff0c;科…

[ASP.NET]状态管理[摘自C#入门经典]

[出处]&#xff1a;来自《C#入门经典》第三版中文版&#xff0c;P505-P506[涉及]&#xff1a;1、状态管理[附注]:看到这个表格总结得还是相当不错的&#xff0c;就摘抄下来了,兴许你看过&#xff0c;但没太在意,那就再看看吧.[正文]:HTTP协议是无状态的。从客户端到服务器的连接…

html表单颜色选择器,如何在Django管理中使用HTML5颜色选择器

我试图在Django的管理页面中实现HTML5 colorpicker。这是我的模型&#xff1a;#model.py...class Category(models.Model):...color models.CharField(max_length7)这是表格&#xff1a;#form.pyfrom django.forms import ModelFormfrom django.forms.widgets import TextInpu…

微软曾经的二号人物永远地离开了

参加 2018 AI开发者大会&#xff0c;请点击 大会官网 他是一位发明家、投资者、考古学家和慈善家&#xff0c;“他对微软做出的不可或缺的贡献”会让人们永远铭记。 据外媒 CNBC 今日早间报道&#xff0c;微软联合创始人之一保罗艾伦&#xff08;Paul Allen&#xff09;于当地时…

经理人必须抛弃的十个习惯思维

1、过分的完美主义可能很多经理人总希望自己可以做到完美&#xff0c;于是拟订了诸多工作计划&#xff0c;但往往到最后&#xff0c;连自己也不知道应该如何选择。一名信奉完美主义的美术设计师总是很晚才交上作品&#xff0c;但他没有意识到&#xff0c;准时与作品质量具有同等…

菜鸟学习之linux用户行为日志审计方案

今天学习了了sudo日志审计&#xff0c;专门对使用sudo命令系统的用户记录其执行的相关命令信息说明&#xff1a;所谓sudo命令日志审计,不记录普通用户操作,而是记录执行sudo命令的用户操作1、安装sudo命令,syslog服务[rootqzj ~]# rpm -qa |egrep "sudo|syslog" rsys…

html+服务器控件语法,HtmlForm 服务器控件声明性语法

HtmlForm 服务器控件声明性语法08/20/2007本文内容创建一个服务器端控件&#xff0c;该控件映射到 HTML 元素并允许您为网页中的元素创建一个容器。DefaultButton"string"DefaultFocus"string"EnableViewState"False|True"Id"string"…

Javascript内置对象新增接口列表

网上很少有提供不同版本接口对比的文章&#xff0c;所以自己总结一下。 Array MethodDescriptionModifyVersionconcat连接多个数组&#xff0c;返回数组副本&#xff0c;参数可以为值或数组否ES3join把数组元素组合为字符串否ES3pop删除并返回最后一个元素是ES3push向数组末尾添…

程序员四大焦虑瞬间:拿什么拯救你,我日益后退的发际线?

参加 2018 AI开发者大会&#xff0c;请点击 大会官网 一场突如其来的降温&#xff0c;再度把程序员的格子衬衫送上热搜&#xff0c;和“发际线 专业水平”等常见标签一样&#xff0c;这往往被视作一种“程序员式的幽默”&#xff0c;但自我调侃之余也不乏令人头秃的真实焦虑。…

mono和monodevelop源码编译安装

之所以用源码编译的方式安装mono和monodevelop&#xff0c;是因为通过yum安装的mono不是最新版本&#xff0c;而且monodevelop不能建 asp.net MVC3的工程。 而且通过源码安装&#xff0c;可以进一步了解mono的各个项目之间的关系。 我用的Fedora16系统 1. mono的源码编译安装 …

sql数据库打包部署安装

目的&#xff1a;在客户端服务器上”附加数据库文件”。一).创建部署项目1. 打开VS.NET2005。2&#xff0e;在“文件”菜单上指向“新建项目”。3. 在“新建项目”对话框中&#xff0c;选择“项目类型”窗格中的”其他项目类型”中的“安装和部署”&#xff0c;然后选择“模板”…

2021潍坊市高考成绩查询,潍坊2021高考成绩排名榜单,潍坊各高中高考成绩喜报

2018高考成绩排名榜单,各高中高考成绩喜报尚未公布&#xff0c;请广大考生和家长参考往年公布情况&#xff01;潍坊四中潍坊四中今年高考再次实现新的历史突破&#xff1a;本科过线1429人&#xff0c;自招(重本)上线379人。高分段情况&#xff1a;理660分以上3人&#xff0c;65…

掌握哪些机器学习工具更受企业青睐?

参加 2018 AI开发者大会&#xff0c;请点击 大会官网 想成为一名优秀的开发工程师不是一件简单的事情&#xff0c;除了掌握工程师的通用技能以外&#xff0c;还需要掌握机器学习的各种算法&#xff0c;更需要掌握从开发到调试到优化等一系列能力&#xff0c;这些能力中的每一项…

从头编写 asp.net core 2.0 web api 基础框架 (5) EF CRUD

第1部分&#xff1a;http://www.cnblogs.com/cgzl/p/7637250.html 第2部分&#xff1a;http://www.cnblogs.com/cgzl/p/7640077.html 第3部分&#xff1a;http://www.cnblogs.com/cgzl/p/7652413.html 第4部分&#xff1a;http://www.cnblogs.com/cgzl/p/7661805.html Github源…

可以打游戏的计算机,还在用笔记本玩游戏?台式机才能给你极致享受

【PConline 游戏爆测】随着笔记本的性能越来越好&#xff0c;玩家对于游戏本的需求也越来越高了&#xff0c;再加上购买游戏笔记本并不需要额外购买显示器&#xff0c;就能享受到高刷新率高色域的屏幕&#xff0c;让玩家对于游戏台式机就更加不感兴趣了。但我想说的是&#xff…