2015-04-12 3 views
0

У меня есть зависимое выпадающее меню для категории> подкатегория без обновления страницы с помощью Ajax. Но в настоящее время мой код JavaScript отправляет запрос Ajax на другую страницу, и он отлично работает, я хочу отправить запрос на ту же страницу. В настоящее время используйте JavaScript, как показано ниже. Пожалуйста, помогите мне получить запрос на ту же страницу.Ajax с PHP не работает

<script type="text/javascript"> 
    $(document).ready(function(){ 

     $(".category").change(function(){ 
     var id=$(this).val(); 
     var dataString = 'id='+ id; 

      $.ajax({ 
      type: "POST", 
      url: "ajax-subcat.php", 
      data: dataString, 
      cache: false, 
      success: function(html){ 
       $(".subcat").html(html); 
       } 
      }); 

     }); 
</script> 

Если я опорожнил Ajax-адрес, все равно не работает на одной странице.

HTML, как показано ниже

<select name="category" class="category"> 
    <option selected="selected">--Select Category--</option> 
    <?php 

    $sql=mysqli_query($mysqlCon, "SELECT * FROM category WHERE catid=1"); 
     while($row=mysqli_fetch_array($sql)){ 
      $cat_id=$row['catid']; 
      $data=$row['catname']; 
      echo '<option value="'.$cat_id.'">'.$data.'</option>'; 
     } 
    ?> 
</select> 


<label>Subcategory:</label> 
<select name="subcat" class="subcat"> 

</select> 

АЯКС-subcat.php содержит ниже

if(isset($_POST['id'])){ 
    $id=$_POST['id']; 
    $sql=mysqli_query($mysqlCon, "SELECT * FROM subcategory WHERE sucat='$id'"); 

     while($row=mysqli_fetch_array($sql)){ 
      $id=$row['sucat']; 
      $data=$row['sucat_name']; 
      echo '<option value="'.$id.'">'.$data.'</option>'; 
     } 
} 

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

ответ

0

Не забудьте правильно отложить свой код и сделать необходимые пространства для удобства чтения. Кроме того, я советую вам отделить ваш код и поместить всю часть PHP в классы, предусмотренные для этой цели.

Попробуйте это:

Html файл

<select id="category"> 
    <?php 
    $sql = mysqli_query($mysqlCon, "SELECT * FROM category WHERE catid=1"); 
    while($row=mysqli_fetch_array($sql)) { 
     $cat_id=$row['catid']; 
     $data=$row['catname']; 
     echo '<option value="'.$cat_id.'">'.$data.'</option>'; 
    } 
?> 
</select> 

<label>Subcategory :</label> 
<select id="subcat"></select> 

<!-- Suppose you call the jquery here --> 

<script type="text/javascript"> 
    $(document).ready(function() { 

    $('#category').change(function() { 
     var id = $(this).val(); 
     $.ajax({ 
      type: 'POST', 
      url: 'ajax-subcat.php', 
      data: json, 
      cache: false 
     }).done(function (data) { 
      $('#subcat').html(data); 
     }).fail(function (data) { 
      alert('You have a critic error'); 
     }); 
    }); 

    }); 
</script> 

Вы должны вызвать скрипт PHP с JSON и иметь обратный вызов с json_encode. Этот подход более чист. Также я установил новый синтаксис ajax. Синтаксис, который вы использовали с «успехом», теперь устарел.

Php файл

<?php 

    if(isset($_POST['id']) && !empty($_POST['id'])) { 
    $id = $_POST['id']; 
    $sql = mysqli_query($mysqlCon, "SELECT * FROM subcategory WHERE sucat='$id'"); 

    while($row = mysqli_fetch_array($sql)) { 
     $id = $row['sucat']; 
     $data = $row['sucat_name']; 
     $return[] = '<option value="'.$id.'">'.$data.'</option>'; 
    } 
    echo json_encode($return); 
    } 
?> 

код не проверял, но я думаю, что это работает

+0

Спасибо за это, но Im не смотря на это. Я хочу иметь код файла php и все вышеперечисленное на 1 странице. Можете ли вы помочь? Мои аспекты проекта не будут соответствовать, если я отправлю запрос ajax другому файлу php. –

+0

Это не чисто. Вы должны иметь разные страницы или использовать модель mvc – Zl3n

Смежные вопросы