为什么使用AJAX后台代码只执行一次

特别 2009-10-22 11:04:27
我测试一个AJAX的小例子,下面是页面文件(Default.aspx),该文件没有服务端代码
我测试时只有第一次显示时间正确,后面怎么点击按钮都不刷新时间了,
貌似Handler1.ashx中的代码只执行一次
请各位帮帮忙,是什么原因



<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script type="text/javascript" language="javascript">
var xmlHttp;

function SetBList(){

xmlHttp=null;
var url = "Handler1.ashx";
createXMLHttpRequest(); // 创建xmlHttp对象
xmlHttp.onreadystatechange = handleStateChange; // 当xmlHttp状态码发生改变时,调用handleStateChage方法
xmlHttp.open("GET", url, true); // GET方法发送请求
xmlHttp.send(null);
}

function BListInitial() {

var ven1 = document.getElementById("Label1");
ven1.innerText = xmlHttp.responseText;
}


function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
BListInitial();
}
}
}

function createXMLHttpRequest() {
// IE
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
// Mozilla
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="Form1" method="post" runat="server">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</form>
<p>
<input id="Button1" type="button" value="button" onclick="SetBList()" /></p>
</body>
</html>



下面文件是AJAX请求的页面(Handler1.ashx)

using System;
using System.Collections;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;

namespace WebApplication1
{
/// <summary>
/// $codebehindclassname$ 的摘要说明
/// </summary>
[WebService( Namespace = "http://tempuri.org/" )]
[WebServiceBinding( ConformsTo = WsiProfiles.BasicProfile1_1 )]
public class Handler1 : IHttpHandler
{

public void ProcessRequest( HttpContext context )
{
context.Response.ContentType = "text/plain";
context.Response.Write( DateTime.Now.ToString() );
}

public bool IsReusable
{
get
{
return true;
}
}
}
}
...全文
184 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
conanhhy 2009-10-23
  • 打赏
  • 举报
回复
LZ为何不用微软的AJAX技术呢?直接通过JS执行webservice的方法?
zjybushiren88888 2009-10-23
  • 打赏
  • 举报
回复
使用第一种方法时禁用缓存可以麽
conanhhy 2009-10-23
  • 打赏
  • 举报
回复
这种方式的AJAX没有用过,关注下。
特别 2009-10-23
  • 打赏
  • 举报
回复
谢谢各位,结贴
leonbingo 2009-10-23
  • 打赏
  • 举报
回复
按照道理来说,你的写法应该是没有错的,因为本身就是一个Get方式,我想你加一个随机数就可以了,因为浏览器那边对同一个url有缓存的,你这样看看

xmlHttp.open("GET", url+"&sid="+Math.random(), true);
gfdh555dfhf 2009-10-23
  • 打赏
  • 举报
回复
也来看看..........
pony_yu 2009-10-23
  • 打赏
  • 举报
回复
直接在URL加个时间戳看看

url?' + Math.random()

这样就可以了
BeenZ 2009-10-23
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 sohighthesky 的回复:]
lz的问题是ie缓存的原因

[/Quote]
Up

或者在发送请求时加

xmlHttp.setRequestHeader("If-Modified-Since","0");
jenny0810 2009-10-23
  • 打赏
  • 举报
回复
学习
sohighthesky 2009-10-23
  • 打赏
  • 举报
回复
lz的问题是ie缓存的原因,写成var url = "Handler1.ashx?rd="+(new Date().valueOf());就行了

至于 你使用的send(url)没使用过,一般只有使用post提交时才将数据sen在过去,post时不会有缓存
ljsheng 2009-10-23
  • 打赏
  • 举报
回复
比较喜欢JQ
caobob 2009-10-23
  • 打赏
  • 举报
回复
get方式如果请求的URL是一样的,本地浏览器会调用缓存,而不向服务器发送请求。给URL加个时间戳看看,要不就直接用POST方法。
特别 2009-10-23
  • 打赏
  • 举报
回复
主要想知道AJAX这行方式具体是怎么工作的
[Quote=引用 7 楼 conanhhy 的回复:]
LZ为何不用微软的AJAX技术呢?直接通过JS执行webservice的方法?
[/Quote]
特别 2009-10-23
  • 打赏
  • 举报
回复
该办法也可以,谢谢
[Quote=引用 6 楼 zjybushiren88888 的回复:]
使用第一种方法时禁用缓存可以麽
[/Quote]
特别 2009-10-22
  • 打赏
  • 举报
回复
问题已解决
xmlHttp.send(null);
改成
xmlHttp.send(url);
就可以了,但是当xmlHttp.send(null);为什么第一次就可以用,以后就不行呢
望有高人解答一下,
过两天结贴
特别 2009-10-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dahaidao 的回复:]
看一下请求反回的内容.
[/Quote]

就是返回服务器时间,
断点了一下,只有第一次点按钮的时候才进去,后来就进入了
dahaidao 2009-10-22
  • 打赏
  • 举报
回复
看一下请求反回的内容.
特别 2009-10-22
  • 打赏
  • 举报
回复
顶一下
# 主成分分析PCA降维算法Python实现 - 数据降维和特征提取 ## 项目简介 本项目提供了主成分分析(Principal Component Analysis, PCA)算法的完整Python实现,包含从数据预处理到结果可视化的全套功能。PCA是一种经典的无监督降维算法,通过线性变换将高维数据投影到低维空间,同时保持数据的最大方差,广泛应用于数据降维、特征提取、数据可视化等领域。 ### 功能特点 - **完整的PCA算法实现**:包含数据标准化、协方差矩阵计算、特征值分解等核心步骤 - **多种数据生成器**:内置多种类型的测试数据生成功能 - **丰富的可视化功能**:支持解释方差图、散点图、双图、热力图等多种可视化方式 - **灵活的参数配置**:支持自定义主成分数量、标准化选项等 - **全面的分析工具**:包含特征重要性分析、重构误差计算、最优成分数量确定等 - **详细的示例代码**:提供多个应用场景的完整示例 ## 安装说明 安装依赖 ```bash pip install -r requirements.txt ``` ## 使用说明 ```bash # 运行所有演示 pytho ```bash # 运行所有演示 python main.py --demo all # 运行特定演示 python main.py --demo iris # 鸢尾花数据集分析 python main.py --demo high_dim # 高维数据降维 python main.py --demo correlated # 相关性数据分析 python main.py --demo comprehensive # 综合分析 # 指定输出目录 python main.py --output results ```
基于Javaweb的机房管理系统的设计与实现编程环境:idea2022平台,jdk1.8,tomcat8.5编程语言:java语言,编程技术:前端vue,div,css,后端:springboot框架,数据库:mysql5.7版本,Navicat Premium 12插件前台+后台前台学生注册,登录机房安全公告列表, 点击查看详情机房信息列表(点击搜索机房,查看到机房的详细情况)上机预约:选择机房,查看电脑信息,显示多少台电脑,点击可以查看机房的电脑详情,多少空闲的,点击可以预约电脑(填写预约时间,预约人)机房消防检公布设备故障上报:注册的学生也可以进行设备故障报修后台管理员管理员信息管理机房安全公告管理机房消防检查管理(记录每次的消防检查,对检查结果进行公布)教师信息管理维修人员管理注册学生管理,审核机房信息管理(多个机房)设备信息管理(电脑设备)填写CPU,内存,品牌,显卡等基本信息日志信息管理教师教师资料修改机房上机预约管理软件设备报修,查看维修结果硬件设备报修,查看维修结果上机信息管理:设置上机信息,下机信息,查看上机时间,查看到历史上机信息维修人员资料信息修改软件设备报修管理,填写维修结果硬件设备报修管理,填写维修结果设备故障报修管理:主要是针对学生前台提交的报修进行管理,处理学生学生资料修改我的预约信息我的上机:点击选择某个电脑进行上机,只能选择预约同意的电脑进行上机,我的下机:上机结束后,点击可以下机,并且计算出上机时间我的历史上机我的设备故障报修管理

62,248

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧