wuyq11请进???

alan0128 2009-12-21 10:49:11
我再做一个关于ajax的省市联动,ajax不怎么熟悉,出错了,都不知道怎么搞了,帮我看看。
    <script type="text/javascript" language="javascript">
var XmlHttp;
function createXMLHttpRequest() {
//在IE下创建XMLHTTPRequest对象
try {
XmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
XmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (oc) {
XmlHttp = null;
}
}
//在Mozilla和Safari等非IE浏览器下创建XMLHTTPRequest对象
if (!XmlHttp && typeof XMLHttpRequest != "undefined") {
XmlHttp = new XMLHttpRequest();
}
return XmlHttp;

}
function SendRequest(str) {
var url = "login.aspx?bk=" + escape(str);
createXMLHttpRequest();
XmlHttp.onreadystatechange = handleStateChange;
XmlHttp.open("GET", url, true);
XmlHttp.send(null);
}
function handleStateChange() {
if (XmlHttp.readyState == 4) {
if (XmlHttp.status == 200) {
var city_string = XmlHttp.responseText;
var city_array = city_string.split(",");
while (document.getElementById("city").options.length > 0) {
document.getElementById("city").options.remove(0);
}
for (var j = 0; j < city_array.length; j++) {
var oOption = document.createElement("OPTION"); //生成OPTION对象
oOption.text = city_array[j];
oOption.value = city_array[j];
document.getElementById("city").add(oOption); //把OPTION对象加入
}
}
else {
alert("请求页面异常!");
}
}
}
</script>
页面
<tr>
<td style="width: 92px"><span>所属省</span></td>
<td style="width: 154px"> <select id="province" onchange="SendRequest(this.value)" runat="server">
<option value="hn">河南省</option>
<option value="gd">广东省</option>
<option value="hb">湖北省</option>
<option value="js">江苏省</option>
</select>
</td>
</tr>
<tr>
<td style="width: 92px"><span>所属市:</span></td>
<td style="width: 154px"><select id="city" runat="server" style="width: 73px"> </select></td>
</tr>
后台:
protected void Page_Load(object sender, EventArgs e)
{
string bk, result = "";
bk = Request.QueryString["bk"].ToString().Trim();
if (bk != "")
{
switch (bk)
{
case "hn":
result = "郑州,洛阳,开封";
break;
case "gd":
result = "广州,深圳,珠海";
break;
case "hb":
result = "武汉,十堰,宜昌";
break;
case "js":
result = "南京,苏州,扬州";
break;
}
Response.Charset = "utf-8";
Response.Write(result);
}
}

错误信息
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:


行 20: {
行 21: string bk, result = "";
行 22: bk = Request.QueryString["bk"].ToString().Trim();
行 23: if (bk != "")
行 24: {

哎,这样怎么会出现这样的错误呢,ajax传值是这样的呀。
...全文
535 91 打赏 收藏 转发到动态 举报
写回复
用AI写文章
91 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序漫步 2009-12-24
  • 打赏
  • 举报
回复
你应该谢谢 这么多回帖人,,大家都在帮你呀!
alan0128 2009-12-24
  • 打赏
  • 举报
回复
非哥,谢谢了,已经解决了。
今天有点忙,稍后结帖。
tkscascor 2009-12-23
  • 打赏
  • 举报
回复
好吧. 我终于你为什么会报NullReferenceException,也知道,ajax请求也可以请求本页面了..
但是, 还是不知道你的为啥不能关联数据. 为你默哀.
alan0128 2009-12-23
  • 打赏
  • 举报
回复
新增 <select id="province" onchange="SendRequest(this.value)" >
<option value="new">请选择</option>
<option value="hn">河南省 </option>
<option value="gd">广东省 </option>
<option value="hb">湖北省 </option>
<option value="js">江苏省 </option> </select>

<select id="city" style="width: 73px"> </select>
还是为空
tianmao111 2009-12-23
  • 打赏
  • 举报
回复
resquest方法经常会出现这个问题的,就是获取不到对象的意思,没对象,就没实力化,没实力化,你就在用呢。。建议加个try块吧
阿非 2009-12-23
  • 打赏
  • 举报
回复
你需要选择省,然后 才会出现对应的市

一上来 有默认的省,但是因为 没触发 select 的 onchange 事件

所以 也就没有异步请求, 所以 市的 select 没有数据
realwar 2009-12-23
  • 打赏
  • 举报
回复
我看一会, 觉得你这个错误是下面这句引起的:
bk = Request.QueryString["bk"].ToString().Trim();
这个写法应该属于编程习惯不好. Request.QueryString["bk"]有可能是null. 如果URL里面没有bk参数怎么? 如果URL里bk参数为零字节长怎么办? 你都没有考虑.
还是将程序写得健壮点吧.
alan0128 2009-12-23
  • 打赏
  • 举报
回复
[Quote=引用 79 楼 sandy945 的回复:]
你自己本页 请求自己

其实,这也可以

但你总是
bk = Request.QueryString["bk"].ToString().Trim();

bk= Request.QueryString["bk"]??"";


[/Quote]
非哥,我错了。这样有值了,可是怎么市还是没有数据呢。
阿非 2009-12-23
  • 打赏
  • 举报
回复
好吧,我承认 我被你打败了。
阿非 2009-12-23
  • 打赏
  • 举报
回复
你自己本页 请求自己

其实,这也可以

但你总是
bk = Request.QueryString["bk"].ToString().Trim();

bk= Request.QueryString["bk"]??"";

alan0128 2009-12-23
  • 打赏
  • 举报
回复
[Quote=引用 77 楼 tkascor 的回复:]
我看你75楼代码了. 你用default2.aspx , 跳转到default2.aspx 页面? ,就一个页面????
[/Quote]
...
tkscascor 2009-12-23
  • 打赏
  • 举报
回复
我看你75楼代码了. 你用default2.aspx , 跳转到default2.aspx 页面? ,就一个页面????
tkscascor 2009-12-23
  • 打赏
  • 举报
回复
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string bk, result = "";
bk = Request.QueryString["bk"].ToString().Trim();
if (bk != "")
{
switch (bk)
{
case "hn":
result = "郑州,洛阳,开封";
break;
case "gd":
result = "广州,深圳,珠海";
break;
case "hb":
result = "武汉,十堰,宜昌";
break;
case "js":
result = "南京,苏州,扬州";
break;
}
Response.Charset = "utf-8";
Response.Write(result);
Response.End();
}

}
}

只是多了红色的. 但是用你的代码, 也正常通过.
alan0128 2009-12-23
  • 打赏
  • 举报
回复
我也纳闷了。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>


<!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>
<script type="text/javascript" language="javascript">
var XmlHttp;
function createXMLHttpRequest() {
//在IE下创建XMLHTTPRequest对象
try {
XmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
XmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (oc) {
XmlHttp = null;
}
}
//在Mozilla和Safari等非IE浏览器下创建XMLHTTPRequest对象
if (!XmlHttp && typeof XMLHttpRequest != "undefined") {
XmlHttp = new XMLHttpRequest();
}
return XmlHttp;

}
function SendRequest(str) {
var url = "Default2.aspx?bk=" + escape(str);
alert(url);
createXMLHttpRequest();
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.send(null);
}
function handleStateChange() {
if (XmlHttp.readyState == 4) {
if (XmlHttp.status == 200) {
var city_string = XmlHttp.responseText;
var city_array = city_string.split(",");
while (document.getElementById("city").options.length > 0) {
document.getElementById("city").options.remove(0);
}
for (var j = 0; j < city_array.length; j++) {
var oOption = document.createElement("OPTION"); //生成OPTION对象
oOption.text = city_array[j];
oOption.value = city_array[j];
document.getElementById("city").add(oOption); //把OPTION对象加入
}
}
else {
alert("请求页面异常!");
}
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<table>
<tr>
<td style="width: 92px"><span>所属省</span></td>
<td style="width: 154px"> <select id="province" onchange="SendRequest(this.value)">
<option value="hn">河南省</option>
<option value="gd">广东省</option>
<option value="hb">湖北省</option>
<option value="js">江苏省</option>
</select>
</td>
</tr>
<tr>
<td style="width: 92px"><span>所属市:</span></td>
<td style="width: 154px"><select id="city" style="width: 73px"> </select></td>
</tr>
</table>
</form>
</body>
</html>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string bk, result = "";
bk = Request.QueryString["bk"].ToString().Trim();
if (bk != "")
{
switch (bk)
{
case "hn":
result = "郑州,洛阳,开封";
break;
case "gd":
result = "广州,深圳,珠海";
break;
case "hb":
result = "武汉,十堰,宜昌";
break;
case "js":
result = "南京,苏州,扬州";
break;
}
Response.Charset = "utf-8";
Response.Flush();
Response.Write(result);
Response.End();
}
}
}

这个???
tkscascor 2009-12-23
  • 打赏
  • 举报
回复
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!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>

<script type="text/javascript" language="javascript">
var XmlHttp;
function createXMLHttpRequest() {
//在IE下创建XMLHTTPRequest对象
try {
XmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
XmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (oc) {
XmlHttp = null;
}
}
//在Mozilla和Safari等非IE浏览器下创建XMLHTTPRequest对象
if (!XmlHttp && typeof XMLHttpRequest != "undefined") {
XmlHttp = new XMLHttpRequest();
}
return XmlHttp;

}
function SendRequest(str) {
var url = "default2.aspx?bk=" + escape(str);
createXMLHttpRequest();
XmlHttp.onreadystatechange = handleStateChange;
XmlHttp.open("GET", url, true);
XmlHttp.send(null);
}
function handleStateChange() {
if (XmlHttp.readyState == 4) {
if (XmlHttp.status == 200) {
var city_string = XmlHttp.responseText;
var city_array = city_string.split(",");
while (document.getElementById("city").options.length > 0) {
document.getElementById("city").options.remove(0);
}
for (var j = 0; j < city_array.length; j++) {
var oOption = document.createElement("OPTION"); //生成OPTION对象
oOption.text = city_array[j];
oOption.value = city_array[j];
document.getElementById("city").add(oOption); //把OPTION对象加入
}
}
else {
alert("请求页面异常!");
}
}
}
</script>



</head>
<body>
<form id="form1" runat="server">
<div>
<select id="province" onchange="SendRequest(this.value)" >
<option value="hn">河南省</option>
<option value="gd">广东省</option>
<option value="hb">湖北省</option>
<option value="js">江苏省</option></select>

<select id="city" style="width: 73px"> </select>
</div>
</form>
</body>
</html>
default.aspx
阿非 2009-12-23
  • 打赏
  • 举报
回复
[Quote=引用 69 楼 alan0128 的回复:]
引用 67 楼 sandy945 的回复:
var url = "login.aspx?bk=" + escape(str);
        alert(url);

这看不到 alert 的值?

是的,       
[/Quote]

你在js 方法中都看不到alert 值 怎么能通
alan0128 2009-12-23
  • 打赏
  • 举报
回复
[Quote=引用 71 楼 tkascor 的回复:]
Response.Write(result);
           Response.End();这个要加上的, 不过这个不关你这个问题.
用你的代码原封不动.我这里怎么测试都可以通过....
[/Quote]
确定,把你代码全帖上来看看。怎么就我通不过呢
tkscascor 2009-12-23
  • 打赏
  • 举报
回复
Response.Write(result);
Response.End(); 这个要加上的, 不过这个不关你这个问题.
用你的代码原封不动.我这里怎么测试都可以通过....
tkscascor 2009-12-23
  • 打赏
  • 举报
回复
[Quote=引用 66 楼 tkascor 的回复:]
很好, 这个帖子看见很多牛人. 膜掰~~
[/Quote]
错别字, 平生痛恨错别字, 鄙视一下自己!
alan0128 2009-12-23
  • 打赏
  • 举报
回复
[Quote=引用 67 楼 sandy945 的回复:]
var url = "login.aspx?bk=" + escape(str);
        alert(url);

这看不到 alert 的值?
[/Quote]
是的,
function SendRequest(str) {
var url = "Default2.aspx?bk=" + escape(str);
alert(url);
createXMLHttpRequest();
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.send(null);
}
我新开的一个页面。
加载更多回复(71)

62,074

社区成员

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

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

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

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