XMLHTTPrequest请求无效

时间:2010-10-18 04:08:11

标签: javascript ajax jsp xmlhttprequest

我尝试了以下代码,只需点击一下按钮就可以向jsp页面发送请求。我检查了Httpfox,但没有请求。我只是在html代码的主体中使用了整个代码。我做了一些愚蠢的错误。请建议..

<button type="button" onClick="handleButtonClick();">Click Me!</button>
<script type="text/javascript">




function handleButtonClick()
{
    // Declare the variables we'll be using
    var xmlHttp, handleRequestStateChange;

    // Define the function to be called when our AJAX request's state changes:
    handleRequestStateChange = function()
    {
        // Check to see if this state change was "request complete", and
        // there was no server error (404 Not Found, 500 Server Error, etc)
        if (xmlhttp.readyState==4 && xmlhttp.status==200) 
        {
            var substring=xmlHttp.responseText;
            // Do something with the text here
            alert(substring);
        }
    }

    xmlhttp = new XMLHttpRequest();
    xmlHttp.open("GET", "http://csce:8080/test/index.jsp?id=c6c684d9cc99476a7e7e853d77540ceb", true);
    xmlHttp.onreadystatechange = handleRequestStateChange;
    xmlHttp.send(null);
}
</script>

3 个答案:

答案 0 :(得分:5)

嗯,在JavaScript中,变量区分大小写。您有xmlHttpxmlhttp;那些应该是一样的。

<pre><code>块的开头还有<script>,这是一个JavaScript语法错误。

答案 1 :(得分:1)

由于没有提出请求,我不相信您实际上可以向“http:// csce:8080”发出请求,因为FireFox可能看不到该URL位于同一个子域中(您无法对资源进行Ajax请求)与请求者不在同一个域上)。

假设您将URL设为相对的。请求甚至生成了吗?如果是这样,那可能是你的问题。

答案 2 :(得分:1)

  

Quote:xmlhttp = new XMLHttpRequest();

两件事。首先,您可能希望使用更健壮的方法来获取XMLHttpRequest对象。其次,javascript区分大小写; xmlhttp!= xmlHttp

xmlHttp = (function (x,y,i) {
    if (x) return new x();
    for (i=0; i<y.length; y++) try { 
        return new ActiveXObject(y[i]);
    } catch (e) {}
})(
    window.XMLHttpRequest, 
    ['Msxml2.XMLHTTP','Microsoft.XMLHTTP']
);
  

引用:http://csce:8080/test/ind ...

请记住,跨域xmlhttp是禁止的。除非你是用csce:8080服务的,​​否则就行不通了。