更新
针对您在其他答案中留下的 cmets,我只想确保我清楚地了解情况:
- 您是从本地主机进行测试,而不是从本地硬盘驱动器(意味着您在浏览器中的 URL 包含“http://localhost”,而不是硬盘驱动器上的位置。
- 当您做出 AJAX 响应时,
alert(...)-ing 结果为您提供 null 或等效值。
- 网址有效,可以在浏览器中加载。
- 您请求的 URL 与原始页面位于同一域中。
如果这些事情都是真的,那么我会尝试以下做一些故障排除:
- 使用 Firefox 并安装 Firebug(我们将需要它来确定 AJAX 请求是否失败以及原因)
- 使用Firebug's console 在您的代码中包含some logging
- 使用 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 manipulation 方法从responseDoc 中提取内容并将其添加到您的主文档中。
如果您需要$.ajax(...) 方法提供的额外功能,您可以使用以下代码。
$.ajax({
url: "http://stackoverflow.com/",
success: function(html) {
var responseDoc = $(html);
}
error: function(XMLHttpRequest, textStatus, errorThrown){
// Handle errors here
}
});