我正在尝试对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'(下面)指出
答案 0 :(得分:1)
很可能,您尝试通过AJAX获取的页面出现问题。检查xmlhttp.status
是什么,如果它是404,那么你永远不会达到打印AJAX响应的程度。确保可以从与javascript相同的目录访问"clearSearchData.asp"
。如果您将javascript代码放在与网站其余部分不同的文件夹中,则这是一个常见问题。或者只需输入"clearSearchData.asp"
的完整网址路径,这样一定会有效。
需要指出的是,xmlhttp.onreadystatechange
中的函数(通常)在代码中声明之后被称为。在这种情况下,在清除并重置搜索表单字段后调用它。
答案 1 :(得分:0)
ajax调用不会自动发送会话cookie。这意味着您要清除的会话不是用户的会话,而只是仅为该ajax调用创建的会话。