1

私は編集ページを作りたいです.ユーザーが質問に行くとき(私は質問のウェブサイトを持っています)、彼はその質問を編集する選択肢があり、ユーザーがクリックして質問を編集するとき、私はそれに関するすべての情報を取得したいですデータベースからの質問とそれを編集ページに入れました.

私の編集ページには多くのドロップダウンリストがあり、各ドロップダウンはjqueryでajaxを使用してデータベースからオプションを取得します

私の問題は最後の 4 つのドロップダウン リストにあります

最初のドロップダウン リストには what the question about 、3 つのオプションがありますplace , cell ,general 。2 番目のドロップダウン リストthe city that question aboutには、14 個の値があります。3 番目のドロップダウン リストにはcell the question about、2 番目のドロップダウン リストのオプションによって異なります。 2番目のドロップダウンリストの都市、セルのドロップダウンリストには多くのオプションがありますが、都市を変更した場合、ユーザーはセルのドロップダウンリストに新しいオプションを持ちwhat the place that the question about 、編集を開くと4番目のドロップダウンが表示されます前のドロップダウンリストに従って、それらのドロップダウンリストにそれぞれの値を入力する必要がありますが、私の問題は、最初からではなく、4または5回の更新後にページが正常に機能することです。良い結果を得るには、ページを 4 ~ 5 回更新する必要があります。because on the first refresh the drop down list still empty , but i alert the results each refresh and i got the expected results

HTML の一部

<?php
  $questionInfo = $this->questionInfo->fetch();
  $questionPlaceCountry = $this->questionPlaceCountry->fetch();
  $questionCell = $this->questionCell;
?>

<script type="text/javascript">
  var typeName= '<?php echo $questionInfo["typeName"]; ?>';
  var place = '<?php echo $questionPlaceCountry["placeName"]; ?>';
  var country = '<?php echo $questionPlaceCountry["countryName"]; ?>';
  var cell = '<?php echo $questionCell; ?>';
</script>

<li>
  <label>About</label>
  <select name="about"id="aqAboutQuestion"></select>
  <span class="errorMessage"></span>
  <p id="aqCoutryAboutQuestion">
    <label>Select City</label>
    <select name="city"class="CountrySelector1"></select>
  </p>
  <p id="aqCellAboutQuestion">
    <label>Select Cell</label>
    <select name="cell"></select>
    <span class="errorMessage"></span>
  </p>
  <p id="aqPlaceAboutQuestion">
    <label>Select Place</label>
    <select name="place"></select>
    <span class="errorMessage"></span>
  </p>
</li>

JQUERYコードの一部

$.getJSON(
  "http://localhost/Mar7ba/Type/getAllTypes/TRUE",
  function(data){

    var options = '';
    options+="<option>Select Type</option>";

    for(var i=0;i<data.length;i++){
      options += "<option value='"+data[i]+"'>"+data[i]+"</option>";
    }

    if($("#addPlace #apTypeSelect").length){
      $("#addPlace #apTypeSelect").html(options);
    }

    if($('.TypeSelector').length){

      $('.TypeSelector').html(options);
      if("#editOneQuestion"){

        $('.TypeSelector').val(typeName);
        if(place!=null){

          $("#aqCoutryAboutQuestion").css("display","block");
          $("#aqCellAboutQuestion").css("display","block");
          $("#aqPlaceAboutQuestion").css("display","block");
          $("#aqAboutQuestion").val("Place");

          $("#aqCoutryAboutQuestion select").val(country);

          $.getJSON(
            "http://localhost/Mar7ba/Cell/getCellsInCity/"+country+"/TRUE",
            function(data1) {

              var optoins1 = '';
                  optoins1+="<option>Select Cell</option>";

              for(var i=0;i<data1.length;i++){
                optoins1+="<option value='"+data1[i]+"'>"+data1[i]+"</option>";
              }

              $("#aqCellAboutQuestion select").html(optoins1);
              $("#aqCellAboutQuestion select").val(cell);
          });

          $.getJSON(
            "http://localhost/Mar7ba/Place/givePlacesInCell/"+cell+"/TRUE",
            function(data2){

              var options2 ='';
              options2+="<option>Select Place</option>";
              for(var i = 0 ; i < data.length;i++){
                options2+="<option value='"+data2[i]+"'>"+data2[i]+"</option>";
              }
              $("#aqPlaceAboutQuestion select").html(options2);
              $("#aqPlaceAboutQuestion select").val(place);
          });
        }
      }
    }
});

あなたは私を助けて、私が間違っていることを教えてくれますか?

4

1 に答える 1

0

問題は、おそらくあなたが使用しているためです

$(document).ready()

ただし、以下を使用する必要があります。

$(windows).load()
于 2012-05-26T20:31:47.010 に答える