2015-04-12 21 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 url,仍然不能用於一個頁面。

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> 

Ajax的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> 

你應該調用使用JSON的PHP腳本,並與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

感謝這一點,但我不是在找這個。我想有PHP文件代碼和以上所有在1頁。你能幫忙嗎?如果我將ajax請求發送到另一個php文件,我的項目方面將不會滿足。 –

+0

它不乾淨。你必須有不同的頁面或使用mvc模型 – Zl3n

相關問題