2013-10-16 47 views
0

我有這樣的Java腳本:填入其他選擇(包括jqtransform)選擇

$("#judet div.jqTransformSelectWrapper ul li a").click(function(){  
var jud= $("#judetul1").val(); 
$.ajax({ 
     type: "POST", 
     url: "rental/cms/inc/ajax/cities.php", 
     data: { 'jud': jud }, 
     success: function (msg) { 

      $("#oras").html(msg); 

     }, 
     error: function (xhr, err) { 
      alert("readyState: " + xhr.readyState + "\nstatus: " + xhr.status); 
      alert("responseText: " + xhr.responseText); 
     } 
    });  
    }); 

和這個網站:

<div class=" h"> 
    <span class="block">Orasul</span> 
    <div class="select6" id="oras"> 

    <select name="oras1" id="oras1" onchange="zone1();sectorul();"> 

    </select> 
    </div> 
    <div class="clear"></div> 
    </div> 
    <div class="clear"></div> 

這個PHP:

public function get_oras($code3) { 
echo "<option selected='selected' value='0'>Alege oras</option>"; 
     $code='PPLA'; 
     $code2='PPLA2'; 
     $sql="SELECT * FROM `locatii` WHERE (`feature_code`=:code OR `feature_code`=:code2) AND `admin1_code`=:code3 ORDER BY `asciiname` ASC"; 
     $stmt = $this->dbh->prepare($sql); 
     $stmt->bindParam(':code', $code, PDO::PARAM_STR, 30); 
     $stmt->bindParam(':code2', $code2, PDO::PARAM_STR, 30); 
     $stmt->bindParam(':code3', $code3, PDO::PARAM_INT); 

     $stmt->execute(); 
     foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $result) 
     { 
      $oras[]="<option value='".$result['geonameid']."'>".$result['asciiname']."</option>"; 

     } 
    return $oras; 

} 

的HTML JUDETUL :

<div class=" h"> 
<span class="block">Judetul</span> 
    <div class="select6" id="judet"> 
    <?php $judetul=$db->get_judet(); ?> 
    <select name="judetul1" id="judetul1" > 
    <option selected="selected">---</option> 
    <?php foreach ($judetul as $val=>$k) { ?> 
    <option value="<?php echo $val; ?>"><?php echo $k; ?></option> 
    <?php } ?> 
    </select> 
    </div> 
    <div class="clear"></div> 
    </div> 
    <div class="clear"></div> 

問題是: 我需要在更改judetul1時填充oras1。 當我更改judetul1選項時,選擇oras1不會從數據庫獲取值。

我該如何解決?

+0

你的HTML中的「judetul1」在哪裏?你已經知道,如果JS,PHP或兩者都失敗了? – kero

+0

如果我刪除jqtransform腳本,js和php工作正常! –

回答

0

我在代碼中看到兩件事情,可能會導致問題。

首先,在你的HTML你不把收到的值從「#oras1」阿賈克斯,但「#oras」:

success: function (msg) { 
    $("#oras").html(msg); // use $("#oras1").html(msg); 
}, 

其次,你應該你的PHP更改爲類似:

public function get_oras($code3) { 
    $oras .= "<option selected='selected' value='0'>Alege oras</option>"; // make change here 
    $code='PPLA'; 
    $code2='PPLA2'; 
    $sql="SELECT * FROM `locatii` WHERE (`feature_code`=:code OR `feature_code`=:code2) AND `admin1_code`=:code3 ORDER BY `asciiname` ASC"; 
    $stmt = $this->dbh->prepare($sql); 
    $stmt->bindParam(':code', $code, PDO::PARAM_STR, 30); 
    $stmt->bindParam(':code2', $code2, PDO::PARAM_STR, 30); 
    $stmt->bindParam(':code3', $code3, PDO::PARAM_INT); 

    $stmt->execute(); 
    foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $result) 
    { 
     $oras .="<option value='".$result['geonameid']."'>".$result['asciiname'].</option>"; // make change here 

    } 
    return $oras; 

} 

在將正常的PHP數組發送到JavaScript之前,這從來不起作用。因此,它需要像JSON一樣的「序列化」。 在你的情況下,最簡單的解決方案就是將所有內容放在一個字符串中並返回。 AJAX將是一個字符串,你可以簡單地注入到你的HTML中。另一個解決方案只是迴應字符串的每個部分。

+0

我改變了這些......但仍然無法正常工作 –

+0

我之前發送這個問題數組到javascript,並正常工作。 –

+0

好的。你可以製作一個msg的console.log()並告訴控制檯中什麼是可用的? – CodyAsThePirate

0

這是一個我遇到的問題,當我開發選擇框之前。

這裏可能會發生兩件事。 1.在judetul1中未觸發onchange事件。如果你想檢查這一點,只需打開一個調試瀏覽器,並觀察「網絡」,看看是否發送到其他頁面的請求來獲取數據庫中的值。

注:平變化是在一些版本jqtransform

2.問題的問題也許僅jqtransform「美化」你的選擇輸入一次(可能是在準備時間文檔)。 當您更改judetul1中的選項時,它會更新oras1選擇框中的選項列表。但是,由於您不再調用jqtransform來再次「美化」您的選擇輸入,所以選項文本不會根據需要進行更新。

如果你仍然需要這個固定的解決方案,確實有這個解決方案。