2013-08-19 3 views
1

В моем коде, который использует загрузку, у меня возникла проблема.index.php # отличается от index.php

Я использую код JS, показанный ниже.

$("li:eq(1)").click(function() { 
      $.get("./test.php") 
       .done(function(data) { 
        $('#middle').html(data); 
      }); 

Это контроль дива.

<div class="container" id=header-nav> 
      <a class="brand" href="index.php"></a> 
      <div class="nav-collapse collapse" > 
       <ul class="nav"> 
        <li class="active"><a href="#">Home</a></li> 
        <li><a href="test.php">test</a></li> 
....... 
<div class="container" id="middle"> </div> 

При нажатии на кнопку тестирования, ссылка изменится на test.php#, но ничего изменить. Нажмите еще раз, он может загрузиться в test.php.

Проблема в том, что ссылка test.php, код не работает. когда test.php#, это работа. И я хотел бы знать, почему.

Большое спасибо.

+0

Перед использованием $ .get попытаться предупредить сообщение. Если вы не работаете, вам нужно передать правильное значение на событие click. Если его работа проверяет ваш путь к файлу test.php. –

+2

Пожалуйста, не используйте 'alert' для отладки. – putvande

ответ

2

Проблема заключается в том, что вы привязали обработчик к элементу li, но нажал элемент a, а затем переводит страницу. Попробуйте вместо этого:

$("li:eq(1) a").click(function(e) { 
    e.preventDefault(); 
    $.get("./test.php") 
     .done(function(data) { 
      $('#middle').html(data); 
     }); 
}); 

preventDefault() прекращает поведение по умолчанию ссылки, то есть ваш запрос AJAX запускается на выполнение по мере необходимости.

+0

Привет, проблема все еще здесь. Любое другое предложение? – kelyiu3000

+0

@ kelyiu3000 нет причин, чтобы это не сработало. Попробуйте проверить консоль на наличие ошибок (нажмите 'F12') –

0

, так как вы хотите использовать $.get (AJAX), вы не должны дать URL для <a> элемента внутри <li> элемента,

вы должны дать атрибут href внутри <a> элемента это значение: javascript:void(0) Или #,

ваш html код будет:

<div class="container" id=header-nav> 
      <a class="brand" href="index.php"></a> 
      <div class="nav-collapse collapse" > 
       <ul class="nav"> 
        <li class="active"><a href="#">Home</a></li> 
        <li><a href="#">test</a></li> 
....... 
<div class="container" id="middle"> </div> 

или вы должны предотвратить действие по умолчанию для элемента, чтобы предотвратить перегрузку url, добавив: event.preventDefault() в вас onclick событие и ваш js код будет:

$("li:eq(1)").click(function(e) { 
event.preventDefault(); 
      $.get("./test.php") 
       .done(function(data) { 
        $('#middle').html(data); 
      });