加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

原生态Ajax——字符串两次切割

发布时间:2020-12-15 21:06:05 所属栏目:百科 来源:网络整理
导读:原生态Ajax需要一个新的aspx作为后台,这里我建了两个aspx分别是qiantai.aspx和houtai.aspx,前台调用后台数据,后台以一串字符串传给前台,前台两次分割 (1)在houtai.aspx.cs中代码如下: 后台的主要函数,连接数据库,查出需要的数据供前台调用 using Sy

原生态Ajax需要一个新的aspx作为后台,这里我建了两个aspx分别是qiantai.aspx和houtai.aspx,前台调用后台数据,后台以一串字符串传给前台,前台两次分割

(1)在houtai.aspx.cs中代码如下:

后台的主要函数,连接数据库,查出需要的数据供前台调用

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

public partial class test数据库_Default : System.Web.UI.Page
{
SqlConnection conn;
SqlCommand comm;
SqlDataReader sdr;
protected void Page_Load(object sender,EventArgs e)
{
string strFind = Request.QueryString["strFind"];
string strResult = findInfo(strFind);
Response.Write(strResult);
Response.End();
}
private string findInfo(string txtFind)
{
string a1;
try
{
conn = new SqlConnection("server=.;uid=sa;pwd=123;database=BJG_CaseExchangeDB");
conn.Open();
string strSQL = "select * from CaseInfo where CaseAddress like '%" + txtFind + "%'";
comm = new SqlCommand(strSQL,conn);
sdr = comm.ExecuteReader();
string strInfo = "";
for (int i = 0; i < sdr.FieldCount; i++)
strInfo += sdr.GetName(i) + "t";//查出的数据用"t"和"n"进行区别,以便前台分割
strInfo += "n";
while (sdr.Read())
{
for (int i = 0; i < sdr.FieldCount; i++)
{
strInfo += sdr[i] + "t";
}
strInfo += "n";
}
if (sdr.HasRows)
a1 = strInfo;
else
a1 = "无匹配记录";
sdr.Close();

}
catch (Exception aaa)
{
a1 = aaa.ToString();
}
return a1;
}
}

(2)在qiantai.aspx中代码如下:

引用esri网站的一些API

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="qiantai.aspx.cs" Inherits="test数据库_houtai" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
<link rel="shortcut icon" href="zhengfu.ico" />//网站图标
<link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.2/js/dojo/dijit/themes/claro/claro.css"/>
<link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.2/js/esri/css/esri.css" />
<script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=3.2"></script>
<script type="text/javascript" src="addMap.js"></script>
<script type="text/javascript" src="addhoutai.js"></script>
<style type="text/css">
#Text1
{
height: 53px;
width: 169px;
}
#TextArea1
{
height: 215px;
width: 1521px;
}
#Button2
{
width: 139px;
height: 56px;
}
#Button1
{
height: 53px;
width: 102px;
}
</style>

</head>
<body class="claro">
<button onclick="tb.activate(esri.toolbars.Draw.POINT);">Point</button>
<button onclick="tb.activate(esri.toolbars.Draw.MULTI_POINT);">Multipoint</button>
<button onclick="clearGeo()">清除</button>
<div id="map" style="width:1024px; height:512px; border:2px solid #000;"></div>
Zoom Slider :
<input type="button" value="Hide" onclick="map.hideZoomSlider()" />
<input type="button" value="Show" onclick="map.showZoomSlider()" />

<form id="form1" runat="server">
<textarea id="TextArea1" name="S1"></textarea><br />
<br />
<input id="Button2" type="button" value="搜索" onclick="findInfo1()"/>
<input id="Text1" type="text" value="月坛南街"/>
<input id="Button1" type="button" value="确定" onclick="submit1()"/><br />
<br />
</form>
</body>
</html>

这里面引用了两个重要的js文件。

(3)在addhoutai.js中代码如下:

主要功能是调用后台的函数把数据库的东东查出来传给前台,并展示在textarea中

var xmlhttp=new XMLHttpRequest();

function findInfo1()
{
var strFind=document.getElementById("Text1").value;
var url="houtai.aspx?strFind="+encodeURIComponent(strFind);
xmlhttp.open("post",url,true);
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlhttp.onreadystatechange=updatePage;
xmlhttp.send(null);
}
var response
function updatePage()
{
if(xmlhttp.readyState==4)
{
if(xmlhttp.status==200)
{
response=xmlhttp.responseText;
document.getElementById("TextArea1").value=response;
}
else
alert(xmlhttp.status);
}
}

var X;
var Y;
var title;//还没用到呢
var n;
function submit1()
{
var infoss=response.split("n");//用字符串数组infoss来接收一条条的数据
n=infoss.length-2;
alert(n);
X=new Array(n);
Y=new Array(n);
title=new Array(n);
for(var i=1;i<=n;i++)
{
var infos=infoss[i];
var info=infos.split("t");//用字符串数组info来接收一条数据中的各个项

X[i]=info[5];
Y[i]=info[6];
title[i]=info[1];

}

cityLayer.clear();
var spat=new esri.SpatialReference();
spat=map.spatialReference;
var symbol = new esri.symbol.SimpleMarkerSymbol();
symbol.setColor(new dojo.Color([0,255]));
for(var j=1;j<n;j++)
{
var point=new esri.geometry.Point(X[j],Y[j],spat);
cityLayer.add(new esri.Graphic(point,symbol));
}
}

(4)在addmap.js代码中:

把查出来的点坐标加入地图中

dojo.require("esri.map");
dojo.require("esri.geometry");
dojo.require("esri.toolbars.draw");

var map,tb,cityLayer;
function init()
{
map = new esri.Map("map");
dojo.connect(map,"onLoad",initToolbar);
map.addLayer(new esri.layers.ArcGISDynamicMapServiceLayer("http://localhost/gis/rest/services/baseMap/MapServer"));
cityLayer = new esri.layers.GraphicsLayer();
map.addLayer(cityLayer);
dojo.connect(map,"onClick",addPoint);


}
function initToolbar(map)
{
tb = new esri.toolbars.Draw(map);
dojo.connect(tb,"onDrawEnd",addGraphic);
}

function addGraphic(geometry)
{
var symbol = null;
var type = geometry.type;
if (type === "point" || type === "multipoint")
{
symbol = new esri.symbol.SimpleMarkerSymbol();
symbol.setStyle(esri.symbol.SimpleMarkerSymbol.STYLE_SQUARE);
symbol.setSize(10);
symbol.setOutline( new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,new dojo.Color([255,0]),3) );
symbol.setColor(new dojo.Color([0,255,0.5]));
}
cityLayer.add(new esri.Graphic(geometry,symbol));
}

function addPoint(evt) {
map.infoWindow.resize(250,100);
map.infoWindow.setTitle("Coordinates");
map.infoWindow.setContent("geo X/Y: " + evt.mapPoint.x.toFixed(2) + "," + evt.mapPoint.y.toFixed(2) +
"<br />screen x/y : " + evt.screenPoint.x + "," + evt.screenPoint.y);
map.infoWindow.show(evt.mapPoint,map.getInfoWindowAnchor(evt.screenPoint));
}

function clearGeo()
{
cityLayer.clear();
}

dojo.addOnLoad(init);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读