更新
为了回应您对其他答案的评论,我只想确保我清楚地了解情况:
- 您正在从本地主机进行测试,而不是从本地硬盘驱动器(这意味着您在浏览器中的 URL 包括“ http://localhost ”,而不是硬盘驱动器上的位置。
- 当您做出 AJAX 响应时,
alert(...)
-ing 结果会给您 null 或等效的值。
- 该 URL 有效,可以在您的浏览器中加载。
- 您请求的 URL 与原始页面位于同一域中。
如果这些事情是真的,那么我会尝试以下做一些故障排除:
- 使用 Firefox 并安装 Firebug(我们需要它来确定 AJAX 请求是否失败以及原因)
- 使用Firebug 的控制台在您的代码中包含一些日志记录
- 使用 jQuery 的
ajax(...)
方法,并通过包含一些日志代码来查看发生了什么来处理失败。如果您所在的页面不需要针对失败请求的视觉响应并且您使用的是 Firebug,则您可以避免此步骤。
这是我将用于此的代码:
$.ajax({
url: "http://stackoverflow.com/",
success: function(html) {
var responseDoc = $(html);
// Output the resulting jQuery object to the console
console.log("Response HTML: ", responseDoc);
}
// Handle request failure here
error: function(){
console.log("Failure args: ", arguments);
}
});
如果您发布 Firebug 日志的输出,应该更容易找出问题并为您找到解决方案。Firebug 还会记录XMLHttpRequests
,因此您可以准确地看到发送到服务器和从服务器发送的内容,如果它返回某种服务器错误,Firebug 将更改请求的外观(这是您可以避免我上面列出的 #3 的方法)。
您可以使用该ajax(...)
方法,但使用get(...)
回调会更容易,如下所示:
$.get("http://stackoverflow.com", function(html) {
var responseDoc = $(html);
});
responseDoc
将是一个 jQuery 对象,您可以使用它来提取元素并像对待任何其他 jQuery 对象一样进行处理。您可以使用jQuery 操作方法从 中提取内容responseDoc
并将其添加到主文档中。
如果您需要该$.ajax(...)
方法提供的额外功能,您将使用以下代码。
$.ajax({
url: "http://stackoverflow.com/",
success: function(html) {
var responseDoc = $(html);
}
error: function(XMLHttpRequest, textStatus, errorThrown){
// Handle errors here
}
});