AJAX / ASP - 简单的任务但是我被卡住了?

时间:2011-10-04 17:36:29

标签: javascript ajax asp-classic

我正在尝试对ASP页面执行一个简单的AJAX调用,它会重置会话变量并在完成时发回一些消息。我这样做纯粹是为了学习AJAX。

这个例子来自W3 Schools网站,但自从将它应用到我的页面后,我似乎无法让它工作,并且它不会产生任何错误,这很烦人,因为我无法调试它。

这是我的JS,当用户点击按钮[Clear Form]时调用:

function resetSearchForm()
{
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("notification").innerHTML=xmlhttp.responseText;
document.getElementById('notification').style.visibility = 'visible';
}
}
xmlhttp.open("GET","clearSearchData.asp",true);
xmlhttp.send();

document.searchFrm.searchStr.value='';
document.searchFrm.vertical.checked = true;
document.searchFrm.horizontal.checked = true;
document.getElementById('dateRange').selectedIndex = 0;
document.searchFrm.searchStr.focus();
}

这是清除我的会话变量并写入消息的ASP(clearSearchData.asp):

Response.Expires = -1
Session("search-str-boolean") = ""
Session("search-str-plain") = ""
Session("date-range") = ""
Session("date-from") = ""
Session("date-to") = ""
Session("specificDate") = ""
Session("peopleStr") = ""
Session("orientation") = ""

Response.Write "Form has been reset"

有人能看到我哪里出错吗?我已经看了很久了,我就是看不到它。

函数本身是有效的,因为函数的最后一部分被处理,清除表单值的位......但是...... AJAX调用没有发生,因为会话变量仍然包含数据而消息没有出现了。

非常感谢...


更新 - - - - - - - - - - -

它现在有效。问题是我没有包含ASP页面的完整URL。感谢'thedaian'(下面)指出

2 个答案:

答案 0 :(得分:1)

很可能,您尝试通过AJAX获取的页面出现问题。检查xmlhttp.status是什么,如果它是404,那么你永远不会达到打印AJAX响应的程度。确保可以从与javascript相同的目录访问"clearSearchData.asp"。如果您将javascript代码放在与网站其余部分不同的文件夹中,则这是一个常见问题。或者只需输入"clearSearchData.asp"的完整网址路径,这样一定会有效。

需要指出的是,xmlhttp.onreadystatechange中的函数(通常)在代码中声明之后被称为。在这种情况下,在清除并重置搜索表单字段后调用它。

答案 1 :(得分:0)

ajax调用不会自动发送会话cookie。这意味着您要清除的会话不是用户的会话,而只是仅为该ajax调用创建的会话。