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

Jquery 之Ajax方法$.get() 的运用,扩展链接模型的天地

如前文说道的那个表现层和业务层的链接模型,从上篇博文(http://www.cnblogs.com/AflutterFeather/archive/2010/01/07/1641315.html)中可以看到:我们通过WebService提供的方法来获取服务端的返回值。

如果不采用WebService,有其他的方法来同服务端代码进行交互吗?

经过研究,终于实验通过,现在就$.get()方法来进行讲解。

$.get(url [,data] [,callback] [,type]) -- 方法的完整定义

第一:从服务端获取字符串

第二:根据传入的参数,自动执行服务端的不同方法,返回字符串

第三:从服务端获取Json格式的数据

环境:

静态页面:get1.htm

服务端页面: get1.aspx

服务端返回Json格式的组件:System.Web.Extensions.dll

1) get1.htm代码(暂时不含js代码)

运行页面》》》

ExpandedBlockStart.gif代码
<form id="form1" action="#">
        
<p>评论:</p>
        
<p>姓名:<input id="username" name="username" type="text" /></p>
        
<p>内容:<textarea id="content" name="content" cols="20" rows="2"></textarea></p>
       
        
<p>
            
<input id="send" type="button" value="提交" /></p>
</form>


<div>已有评论:</div>
    
<div id="resText" class="highlight">
</div>

2)get1.htm代码(js代码)

ExpandedBlockStart.gif代码
$(function(){
    $(
"#send").click(function(){
       $.
get("get1.aspx",

             { username :  $(
"#username").val() , content :   $("#content").val()  },
             function (data, textStatus){
                
if(textStatus)
                {
                    $(
"#resText").html(data); 
                 }
//if
             }//function (data, textStatus

       );
//$.get

    })
 })

 

3)JS代码说明:

$("#username").val()  -- 获取控件中填入的值

{ username :  $("#username").val() , content :   $("#content").val()} -- data输入参数格式

textStatus -- 返回的状态值,bool类型的值

$("#resText").html(data);  -- 从get1.aspx返回的值插入到div里面去

4)get1.aspx代码说明

只有一行代码

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="get1.aspx.cs" Inherits="get1" %>

5)get1.cs 代码说明

ExpandedBlockStart.gif代码
protected void Page_Load(object sender, EventArgs e)
 {
        
string k1 = "";
        
string k2 = "";
       
        
if (Request.QueryString["username"!= null)
        {
            k1 
= Request.QueryString["username"].ToString();
        }
        
if (Request.QueryString["content"!= null)
        {
            k2 
= Request.QueryString["content"].ToString();
        }

        Response.Write(GetInfo1(k1, k2));

}

 

private string GetInfo1(string username, string content)
{
        
return "I>>"+username + ">>" + content;
}

总结:当点击get1.htm的提交按钮的时候,将值传入服务端get1.aspx,经过处理后,通过回写出字符串。

        》》》》》》》》》》》》》》》 

进行扩展思维--------------------》

扩展1

不通过webservice,我们就可以与服务端进行交互,这个时候我们让其根据传入的参数类型来执行不同的方法,这样我们就可以把很多方法都写在一个集中的页面里面(Facade模式),以便于集中管理

$.get("../get1.aspx?type=1",    -- 加了一个传入类型

.cs代码的变化

ExpandedBlockStart.gif代码
protected void Page_Load(object sender, EventArgs e)
{
        
string k1 = "";
        
string k2 = "";
        
string strType = "";
        
if (Request.QueryString["username"!= null)
        {
            k1 
= Request.QueryString["username"].ToString();
        }
        
if (Request.QueryString["content"!= null)
        {
            k2 
= Request.QueryString["content"].ToString();
        }
        
if (Request.QueryString["type"!= null)
        {
            strType 
= Request.QueryString["type"].ToString();
        }

        
if (strType == "1")
        {
            Response.Write(GetInfo1(k1, k2));
        }
        
else if (strType == "2")
        {
            Response.Write(GetInfo2(k1, k2));
        }
 }

    
private string GetInfo1(string username, string content)
    {
        
return "I>>"+username + ">>" + content;
    }

    
private string GetInfo2(string username, string content)
    {
        
return "II>"+username + ">>" + content;
    }

扩展2

以上都是返回一个字符串,在cs页面调用Response.write方法进行写入。这对于单个返回值是没有问题的,但如果我们要返回一个对象的值?总不能采用这种方法,用分隔符组合在一起,然后又拆开,这样就太麻烦了,这个时候就要用到Json格式。

ExpandedBlockStart.gif代码
$.get("../get1.aspx?type=3",

          { username :  $(
"#username").val() , content :  $("#content").val()  },
           function (data, textStatus){
               var data1 
= ("(" + data + ")");
               
if(textStatus){
                    var username 
= data1.username;
                    var content 
= data1.content;
          
                    var txtHtml 
= "Json>>" + username + "|" + content;
                    $(
"#resText").html(txtHtml);
               }
               
else
               {
                    alert(
"error");
                }
           },
"JSON");

注意:"JSON" 一定要写成大写,否则调用没反映

方法一定要加上,否则也不会显示出值来(我的理解是:使用这个方法后,data被整理成了对象,在data1.username的时候才会显示出来),这点我有点不太明白,还需进行试验才行,不过至少用这种方式可以获取一个对象的值。

cs代码关于JSon

ExpandedBlockStart.gif代码
private string GetInfo_Json(string username, string content)
    {

        UserInfo objUserInfo 
= new UserInfo();
        objUserInfo.username 
= username;
        objUserInfo.content 
= content;
        
return new JavaScriptSerializer().Serialize(objUserInfo); ;
    }

注:采用JSON格式的时候,get1.aspx值允许一行代码,如果有其他的代码,无法返回值,关于这一点大家可以去尝试一下,其实很简单,只需要在get1.aspx里面加入html代码即可

比如:

<html> </html>

总结:

经过以上的叙说,我们可以知道了这种链接模型也可以在不使用WebService情况下进行使用,这样这种模型的天地,我觉得打开了,完全可以做为一种独立的模型去开发,真正得做到完全与服务器语言独立,当然我们还面临很多要解决的困难,在接下来的博文中会陆续去解决。

转载于:https://www.cnblogs.com/AflutterFeather/archive/2010/01/07/1641332.html

相关文章:

B树建立与遍历

# include <stdio.h> # include <stdlib.h># include "btrees.h"/* 给一个结点分配空间 */ struct btnode * allocateNode(struct btnode *ptr){int i,max;ptr (struct btnode *)malloc(sizeof(struct btnode));if(!ptr){printf("allocated error!…

2.2版本发布!TensorFlow推出开发者技能证书

作者 | 弯月出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;受 COVID-19 的影响&#xff0c;今年的 TensorFlow 开发者大会于2020年3月12日&#xff08;北京时间&#xff09;凌晨以线上直播的方式与全球开发者见面。Google决定开源TensorFlow是为了让每个开发人员和研…

X3D中Profile如何翻译

问题在哪 在计算机术语中&#xff0c;Profile其实是很难用中文对应的词汇来翻译的一个单词。 在X3D国际标准中&#xff0c;就出现了Profile。它把软件产品对X3D的功能实现范围和相应支持程度做了预先的约定&#xff0c;分为Core Profile、Interchange Profile、Interactive Pro…

腾讯提结合ACNet进行细粒度分类,效果达到最新SOTA | CVPR 2020

作者 | VincentLee来源 | 晓飞的算法工程笔记细粒度分类(Fine-Grained Visual Categorization, FGVC)是图片分类的一个分支&#xff0c;由于类别间的相似性非常大&#xff0c;一般人比较难区分&#xff0c;所以是个很有研究意义的领域。受神经树研究的启发&#xff0c;论文设计…

asp.net mvc view中支持多个实体强类型小技巧

在MVC的开发过程中&#xff0c;在一个View里面可能需要调用多个对象&#xff0c;可是传统的方法是一次只能压入一个对象到View里面&#xff0c;这点并不像Castle框架的MVC好用&#xff0c;在Castle里面&#xff0c;可以很方便的把对象压入到前台Html里面&#xff0c;然后通过Ve…

使用指针做函数返回值

使用指针做函数返回值 1、当使用指针做为函数的返回值时&#xff0c;主函数处的char *p;将获得调用函数char *pf;的值&#xff0c;即一个地址值&#xff0c;如oxAE72。此时需要我们注意的是该地址值所指向的空间是否存在(即已向操作系统声明注册&#xff0c;不会被释放&#x…

Android Studio快捷键每日一练(2)

原文地址&#xff1a;http://www.developerphil.com/android-studio-tips-of-the-day-roundup-2/ 12、复制行 苹果&#xff1a;CmdD Windows&#xff1a;CtrlD 顾名思义&#xff0c;就是拷贝当前行并粘贴在下一行&#xff0c;整个过程无需和剪贴板交互。这个功能配合行移动快…

C语言字符char和整型int的关系

C语言并无char类型&#xff0c;就是用Int表示char的&#xff01;char占一个字节&#xff0c;在C语言所有类型中最小。 char *占4字节&#xff08;32位&#xff09;&#xff0c;8字节&#xff08;64位&#xff09; 在C语言中&#xff0c;实际上字符型数据在内存中是以二进制形式…

PyTorch关键算法疑似侵权,Facebook被起诉

作者 | 神经星星来源 | HyperAI超神经&#xff08;ID:HyperAI&#xff09;近期&#xff0c;一纸诉讼书引起社区的广泛讨论。该诉讼由创业公司 Neural Magic 发起&#xff0c;指控 Facebook 发布到 GitHub 的神经网络软件&#xff0c;使用了他们开发的核心算法。而泄露机密的人&…

大数据高效复制的处理案例分析总结

一个老客户提出这样的需求&#xff0c;希望将SQLServer中的某个表的数据快速复制到SQLite数据库里面以便进行定期的备份处理&#xff0c;数据表的记录大概有50多万条记录&#xff0c;表有100个字段左右&#xff0c;除了希望能够快速做好外&#xff0c;效率是第一位的&#xff0…

memset函数使用详解

1.void *memset(void *s,int c,size_t n) 总的作用&#xff1a;将已开辟内存空间 s 的首 n 个字节的值设为值 c。 2.例子 &#xff03;include void main(){ char *s"Golden Global View"; clrscr(); memset(s,G,6); printf("%s",s); getchar(); ret…

节后招人平均工资9000上热搜,为什么有些人去哪里都值钱?

我”荒“了。这是很多中国AI企业的现状。《人民日报》报道称&#xff0c;我国AI的人才缺口超过500万&#xff0c;供求比例仅为1&#xff1a;10&#xff01;很多企业已经开始面临“人才荒”的窘境&#xff0c;外媒爆料说&#xff0c;中国企业已经不断在硅谷挖人了&#xff01;目…

关于定于如何弄的漂亮点

</div></div><div class"panel"><h5 οnclickshowhidediv("sidebar_rss");>订阅博客</h5><div class"panel-content" id"sidebar_rss" style"display: block"><ul class"list&…

Happy New Year 2016

大学之前的时间都是按天来过的&#xff0c;期盼着一天一天地快快长大&#xff0c;期盼着过年穿新衣&#xff0c;阖家团聚&#xff0c;其乐融融&#xff1b; 大学的时间都是按周来过的&#xff0c;根据每周的课表周而复始&#xff0c;虽然单调但也是自由自在&#xff0c;简单充实…

HashTable原理与实现

memcached中hashtable部分的源码&#xff0c;hash部分的源码主要分布在assoc.h/c、hash.h/c中&#xff0c;总得来说代码比较简单&#xff0c;这里就稍微介绍一下。hashtable通常包括哈希函数和解决冲突的方法两个最主要的因素&#xff0c;memcached使用的哈希函数为Bob Jenkins…

as3自定义加载图片类

ImageLoader.as类&#xff1a; package{ import flash.display.Bitmap; import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.events.ProgressEvent; import flash.net.URLRequest; /** * 图片加载类…

想成为一个数据科学家却不知道从何下手?这份路线图带你打开数据科学大门!...

作者 | Jane译者 | 火火酱 责编 | 徐威龙出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;你想成为一名数据科学家吗&#xff1f;你对数据科学了解很多&#xff0c;想知道关于数据科学天花乱坠的宣传都在讲什么吗&#xff1f;那好&#xff0c;你算是来对了地方。在过去…

bzoj 1691: [Usaco2007 Dec]挑剔的美食家

Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 621 Solved: 280[Submit][Status][Discuss]Description 与很多奶牛一样&#xff0c;Farmer John那群养尊处优的奶牛们对食物越来越挑剔&#xff0c;随便拿堆草就能打发她们午饭的日子自然是一去不返了。现在&#xff0c;Farmer…

PHP内核中的哈希表结构

https://github.com/HonestQiao/tipi/commit/17ca680289e490763a6a402f79afa2a13802bb36 下载&#xff1a;https://github.com/HonestQiao/tipi/tree/master/book/sample/chapt03 原文地址&#xff1a;http://www.nowamagic.net/librarys/veda/detail/1344 PHP中使用最为频…

应聘苹果数据科学家,你需要知道些什么?

作者 | Jay Feng译者 | 孙薇&#xff0c;责编 | 屠敏头图 | CSDN 下载自东方 IC出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;以下为译文&#xff1a;苹果公司是全球最大的技术公司之一&#xff0c;从事电子消费产品、计算机软件以及在线服务的设计、开发并销售工…

python 利用模板文件生成配置文件

2019独角兽企业重金招聘Python工程师标准>>> gen.py: __author__ fuhan from jinja2 import Template a{name:a} b{name:b} mode_dict { a:a, b:b } def gen_config(tplt_file, modea): with open(tplt_file, r) as r: tplt Template(r.read()) config mode_dic…

利用Apache的ab命令做Benchmark性能测试

测试系统性能&#xff0c;例如httpsqs # ab -k -c 10 -n 100000 "http://127.0.0.1:1218/?namexoyo&optput&dataabc ab是Apache超文本传输协议(HTTP)的性能测试工具。 其设计意图是描绘当前所安装的Apache的执行性能&#xff0c;主要是显示你安装的Apache每秒可…

MySQL 狠甩 Oracle 稳居 Top1,私有云最受重用,大数据人才匮乏! | 中国大数据应用年度报告...

整理 | 屠敏出品 | CSDN&#xff08;ID:CSDNnews&#xff09;科技长河&#xff0c;顺之者昌&#xff0c;错失者亡。在这个技术百态之中&#xff0c;中国专业的 IT 社区CSDN 创始人&董事长蒋涛曾多次在公开活动中表示&#xff0c;开发者是对技术变革最敏感的人群。这不仅源于…

MAC安装OpenXenManager管理Xenserver

官方文档&#xff1a;https://github.com/OpenXenManager/openxenmanager要求&#xff1a;Python 2.7pyGTK 2.16ConfigObjRavenGTK-VNC&#xff08;仅限Linux&#xff09;Debian / Ubuntu Linux软件包依赖项&#xff1a;python2.7 python-gtk2 glade python-gtk-vnc python-gla…

用Flutter + Dart快速构建一款绝美移动App

作者 | Wojciech Kuroczycki译者 | 弯月来源 | CSDN&#xff08;ID:CSDNnews&#xff09;如今&#xff0c;与前端或移动相关的新框架层出不穷。所有从事Web开发的人都应该熟悉各种目不暇接的新方法以及针对复杂问题的轻量级解决方案。我们不再因为没有现成的技术而烦恼&#xf…

自己写的单链表

link.c #include <stdio.h> #include <malloc.h> #include <string.h> #include <stdlib.h> #include "link.h"/**** 这是一个计算HASH值的算法**/ int time33(char* arKey,int arlength){int h 0;int i;for(i0;i<arlength;i){h h*3…

假装不知道有尽头(博弈论的诡计)

《笑林广记》中记载这样一则笑话。 有一个人去理发铺剃头&#xff0c;剃头匠给他剃得很草率。剃完后&#xff0c;这人却付给剃头匠双倍的钱&#xff0c;什么也没说就走了。一个多月后的一天&#xff0c;这人又来理发铺剃头。剃头匠还记得他上次多付了钱&#xff0c;觉得此人阔绰…

Java Script 第四节课 Java Script的隐式转换

<!DOCTYPE html><html><head><meta charset"utf-8"><title></title><script type"text/javascript">/*if(exp){exp为true的代码段;}else{exp为false的代码段;}*///其它类型转换成布尔类型假的有var a;//undefin…

深入理解malloc和free

1.为什么free是void*&#xff0c;那么它怎么知道要释放多少内存&#xff1f; 《UNIX环境高级编程》 《C语言编程常见问题解答》 《你必须知道的495个C语言问题》 《UNIX环境高级编程》 2.free源码 内存控制块结构定义 struct mem_control_block {int is_available;int si…

根据IP和MAC查端口

进入交换机的命令提示符.输入show ip arp 查出IP地址跟MAC 地址的对照表.再输入show mac-address-table,看一下这个MAC是从哪个端口学到的转载于:https://blog.51cto.com/124130/271033