0

我正在尝试XMLHttpRequest()在 ASP.NET MVC 应用程序中使用 JavaScript 对象进行测试。我已经编写了以下测试代码,并将其放入视图中-

<script type="text/javascript">
var request;

function getAJAX() {
    request = new XMLHttpRequest();
    request.open("GET", "test.txt");
    request.onreadystatechange = checkData();
    request.send(null);
}


function checkData() {
    if (request.readyState == 4) { 
        if (request.status == 200) { 
            alert(request.responseText);                
        }
    }
}
</script>

<form action="">
    <p>
        <button type="button" onclick="getAJAX()">DO IT!</button>
    </p>
</form> 

当我点击“DO IT!” 按钮,脚本函数被调用,但"request.onreadystatechange"永远不会改变。我对此有几个问题-

  1. 有没有一种简单的方法来跟踪呼叫发生的情况request.open()
  2. XMLHttpRequest()对象甚至可以在 ASP.NET MVC 应用程序中工作吗?
  3. 我是否必须对 Global.asax 文件进行更改(或其他更改)才能使其正常工作?
  4. "test.txt""base"目录中(与 Global.asax 文件的位置相同)是 request.open 调用的位置吗?

注意:我试图在没有 jQuery 的情况下做到这一点)

非常感谢!

4

1 回答 1

1

您将回调设置为执行onreadystatechange结果checkData。改为设置onreadystatechange等于checkData,你应该很高兴:

function getAJAX() {
    request = new XMLHttpRequest();
    request.open("GET", "test.txt");
    request.onreadystatechange = checkData; // Don't execute checkData
    request.send(null);
}

至于你的其他问题:

有没有一种简单的方法来跟踪 request.open() 调用发生了什么?

使用 Firebug 或您选择的开发工具来检查 AJAX 请求。

XMLHttpRequest() 对象甚至可以在 ASP.NET MVC 应用程序中工作吗?

是的,它会正常工作。

我是否必须对 Global.asax 文件进行更改(或其他更改)才能使其正常工作?

不是我知道的。

我在“base”目录中有“test.txt”(与 Global.asax 文件相同的位置)是 request.open 调用的位置吗?

也许?这实际上取决于您的路由规则以及您如何配置 IIS。

于 2013-01-12T16:06:26.390 回答