你的代码有几个问题:
1) 您没有指定匿名函数的参数。论点
是事件(这里:点击)。您稍后将需要它来禁用“正常”
点击行为:
$("a.bind-jquery-event-here-class").bind("click", function(event) {
event.preventDefault();
2) 阅读不需要val() 的href。 (val() 用于从输入字段中读取内容。)
var url = $(this).attr("href");
3) AJAX 中的 A 代表异步。对于您的代码,这意味着:仅加载
开始从服务器加载数据,但不会等待直到完成。
您必须定义一个回调函数,以便在数据最终到达时对其进行处理。
4) load 用于执行 AJAX 调用并将结果插入到 DOM 中。您不能将其用于警报。如果您确实需要警报,请改用 $.ajax。
5) 您不能通过 AJAX 加载任意 URL,您的 AJAX 调用只能返回到您的
自己的服务器。如果您需要从其他服务器加载内容,则必须使用服务器端
脚本作为代理。以下是您调用代理的方式:
$.ajax({
type: "POST",
url: "proxy.php",
data: "url="+url,
success: function(data){
alert("finally got data " + data);
}
});
这是一个 php 中的示例代理。
<?php
error_reporting (E_ALL ^ E_NOTICE);
if ( isSet($_POST['url']) ) {
if( true == ($str=file_get_contents( $_POST['url'] ) )) {
echo $str;
exit;
}
}
echo "could not read page";
?>
关于 php:file_get_contents 的警告可能在您的服务器上被禁用。
这是用于测试的完整 javascript 代码:
$(document).ready(function(){
$("a.bind-jquery-event-here-class").bind("click", function(event) {
event.preventDefault();
var url = $(this).attr("href");
alert("loading via proxy: " + url);
$.ajax({
type: "POST",
url: "proxy.php",
data: "url="+url,
success: function(data){
alert("finally got data " + data);
}
});
});
});