0

ajax 呼び出しを使用して Web サービスからデータを取得しています。私はそれを変数に保存しています。私が直面している問題は、選択メニューに入ったこのデータを表示する必要があることです..私はそれをクラックすることができません. 私のhtmlコード。

<div data-role="page" id="requestPage">
<div data-role="fieldcontain">
<select id="select-choice-3" name="pid you need">
<option value="select-value" selected="selected">-- Select PID --</option>
// here i want my data to be
</select>
</div>
</div>

JS コード

function content_Load(){
var soapMessage='<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><GetProjectByPeopleId xmlns="http://there.org/"><tmsUserId>' + TmsUserId +'</tmsUserId></GetProjectByPeopleId></soap:Body></soap:Envelope>'

$.ajax({
       url: "http://22.232.32.14/therewebservice/thereeatmswebservice.asmx?op=GetProjectByPeopleId",
       type: "POST",
       dataType: "xml",
       SOAPAction: "http://there.org/GetProjectByPeopleId",
       data: soapMessage,
       complete: endSaveProduct,
       contentType: "text/xml; charset=\"utf-8\""
       });
return false;
}
function endSaveProduct(xmlHttpRequest,status){

$(xmlHttpRequest.responseXML)
.find('Table')
.each(function()
      {
      var ProjectName =$(this).find('ProjectName').text();
// i am able to get ProjectName as my data, now i want it to get into the select menu for which i have written the code bellow but that's not working.
      var optionlist='';
      optionlist += '<option>' + ProjectName + '</option>';
      $("#select-choice-3").html(optionlist).selectmenu('refresh', true);
      window.location.href="#requestPage";

      });
}
4

1 に答える 1

0

endSaveProduct関数で、各「テーブル」を反復処理しているときは、次のように見えます。

  1. 変数optionlistを空白/クリアします(optionlist ='';)、
  2. ProjectNameを変数オプションリストに追加します(これは正しいですが、毎回空白にするため、これは効果がありません)
  3. 見つかったProjectNameで選択を上書きします。
  4. #requestPageに移動します。

私が正しければ、これはループが終了した後に見つかった最後の「ProjectName」だけを残し、事実上、1つのオプションだけで選択できるようになります。オプションリスト変数、オプションリストの実際の入力、および各()の外側へのリダイレクトを配置してみてください。

function endSaveProduct(xmlHttpRequest,status){
    var optionlist=''; //moved variable declaration here
    $(xmlHttpRequest.responseXML)
        .find('Table')
        .each(function()
        {
            optionlist += '<option>' + $(this).find('ProjectName').text() + '</option>'; //shortened it
        });
    //moved populating the optionlist here
    $("#select-choice-3").html(optionlist).selectmenu('refresh', true);
    window.location.href="#requestPage";
}

私はこれをテストしていませんが、これが問題だと思います。

また、デフォルトで選択されている「--SelectPID--」オプションを上書きしています。これを修正するには、オプションリストの定義を次のように書き直すこともできます。

var optionlist = '<option value="select-value" selected="selected">-- Select PID --</option>';

または、joerajeevが提案しているように、html()の代わりに.append()を使用します。

于 2012-07-25T11:55:23.740 に答える