Есть несколько проблем с вашим кодом:
1) вы не указали аргумент вашей анонимной функции. Аргумент
это событие (здесь: клик). это понадобится вам позже, чтобы отключить 'нормальный'
поведение клика:
$("a.bind-jquery-event-here-class").bind("click", function(event) {
event.preventDefault();
2) Для чтения href вам не нужно val()
. (val()
для чтения содержимого из полей ввода.)
var url = $(this).attr("href");
3) A в AJAX обозначает асинхронный. для вашего кода это означает: просто загрузить
запускает загрузку данных с сервера, но не ждет до его завершения.
Вы должны определить функцию обратного вызова , которая обрабатывает данные, когда они наконец поступают.
4) load для выполнения вызова AJAX и вставки результата в DOM. Вы не можете использовать его для предупреждения. вместо этого используйте $ .ajax, если вам действительно нужно предупреждение.
5) вы не можете загружать дополнительные URL-адреса через AJAX, ваш вызов 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);
}
});
});
});