Javascript中的AJAX-命名回调;不起作用
AJAX in Javascript - named callback doesn't work
我正在用javascript做一个非常简单的AJAX演示。我的应用程序有一个AddCountry页面,用户选择一个国家,状态列表是通过AJAX动态填充的。
演示一直很好,直到我决定尝试一些新的东西。我使用的不是带有onreadystatechange
事件处理程序的匿名回调,而是命名回调。它给了我这个错误:
Uncaught InvalidStateError: Failed to read the 'status' property from 'XMLHttpRequest': the object's state must not be OPENED.
这里有两个示例代码:
通用部分:
<script type="text/javascript">
function createXHR(){
if(window.XMLHttpRequest)
return new XMLHttpRequest();
else
return new ActiveXObject("MSXML2.XMLHTTP");
}
function getStates()
{
alert("inside getStates");
var ajax = createXHR(); // step 1 : create XHR object
alert("XHR:"+ajax);
// step 2: creating the ajax request
var inputVal = document.getElementById("country");
var country = inputVal.value;
alert("Value:"+country);
ajax.open("GET","index.jsp?country="+country, true);
// sending the ajax request
ajax.send(null);
// step 4: monitoring for and updating the response
在此之后,此代码不起作用:
ajax.onreadystatechange = ajaxCallback();
function ajaxCallback(){
//alert("Response Received:"+ajax.status);
if (ajax.status === 404)
alert("status 404");
if (ajax.readyState === 4 && ajax.status === 404)
{
alert("Response Received; "+ajax.responseText);
document.getElementById("states").innerHTML = ajax.responseText;
}
}
但这是有效的:
ajax.onreadystatechange = function (){
if (ajax.readyState == 4 && ajax.status == 200)
{ document.getElementById("states").innerHTML = ajax.responseText; }
}
有人能告诉我这里的错误是什么吗?
提前感谢,Navin
您正在调用函数并将响应分配给onreadystatechange,而不是将处理程序分配给事件。应该是:
ajax.onreadystatechange = ajaxCallback;
相关文章:
- Javascript点击事件回调不起作用
- 构建Ajax调用数组时,JQueryAjax成功回调不起作用
- 类似FaceBook的按钮回调不起作用
- 引导框.js回调不起作用
- PhoneGap 3.0.0 Tanelih 蓝牙插件在 Android 上已启用错误回调不起作用
- 使用 jQuery $.ajax 的 JSONP 响应/回调不起作用
- AJAX 中的成功或错误回调不起作用
- 将 jquery remove 方法设置为动画完成时的回调不起作用
- 节点谷歌地理编码器回调不起作用
- 护照LinkedIn回调不起作用
- Jquery post回调不起作用
- Ajax 回调不起作用
- node-js-mongodb回调不起作用-下面的代码在我的笔记本电脑上起作用,但在另一台电脑上不起作用
- ajax成功回调不起作用
- 敲除可排序'拖动'回调不起作用
- AJAX回调不起作用
- jQuery动画回调不起作用
- react ES5风格的函数回调不起作用
- Angular UI树模块:移除的回调不起作用
- 窗口事件侦听器内部的回调不起作用