6
我正在尝试做一些AJAX,并且需要知道为什么这段代码没有触发完成或错误警报。我在Mozilla Firefox 20.0.1JavaScript XMLHttpRequest.onreadystatechange
请注意
此代码IS更新数据库(我有一个select语句读取验证它的更新的确切记录)我只是不确定为什么在响应完成时我无法获得警报。
我有这些GLOBAL(在JavaScript页面的顶部)声明的变量。
var AjaxEnginePage;
var ClientInfoPage;
var XMLHTTP;
AjaxEnginePage = "AjaxEngine.aspx";
ClientInfoPage="getClientInfo.aspx";
创建连接。
//Creating and setting the instance of appropriate XMLHTTP Request object to a “XmlHttp” variable
function CreateXMLHTTP()
{
try
{
XMLHTTP = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(oc)
{
XMLHTTP = null;
}
}
//Creating object in Mozilla and Safari
if(!XMLHTTP && typeof XMLHttpRequest != "undefined")
{
XMLHTTP = new XMLHttpRequest();
}
}
绑连接:
function btnUpdateMe_OnClick() {
var me = encodeURIComponent(document.getElementById("MeTextBox").value);
// construct the URL
var requestUrl = AjaxEnginePage + "?Action=UpdateMe&Me=" + me;
CreateXMLHTTP();
// If browser supports XMLHTTPRequest object
if(XMLHTTP)
{
//Setting the event handler for the response
XMLHTTP.onreadystatechange = handleStateChange(me);
//Initializes the request object with GET (METHOD of posting),
//Request URL and sets the request as asynchronous.
XMLHTTP.open("get", requestUrl, true);
//Sends the request to server
XMLHTTP.send(null);
}
处理状态更改
function handleStateChange(me) {
switch (XMLHTTP.readyState) {
case 0: // UNINITIALIZED
case 1: // LOADING
case 2: // LOADED
case 3: // INTERACTIVE
break;
case 4: // COMPLETED
alert("Success");
break;
default: alert("error");
}
,如果需要,我可以提供更多的代码。 。:(感谢
这条线。 ,'XMLHTTP.onreadystatechange = handleStateChange(me);',你立即调用'handleStateChange'并将其返回值返回给'onreadystatechange'(它什么都不返回,所以返回值是'undefined')。 'onreadystatechange'需要引用一个函数。另外,你传递'me',但是你不会在'handleStateChange'函数中使用它。 – Ian 2013-05-04 00:33:08
我意识到并且为不使用我而道歉,我的意思是将其删除。 – Kulingar 2013-05-04 01:26:12
不需要道歉,我只是想我会指出来。由于它不在函数中使用,因此修复问题更容易。如果需要的话,你必须增加一点 – Ian 2013-05-04 03:08:21