我尝试了以下代码,只需点击一下按钮就可以向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>
答案 0 :(得分:5)
嗯,在JavaScript中,变量区分大小写。您有xmlHttp
和xmlhttp
;那些应该是一样的。
您<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服务的,否则就行不通了。