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函数中,当您迭代每个'Table'时,您:

  1. 空白/清除变量选项列表(optionlist = '';),
  2. 将 ProjectName 添加到变量选项列表(这是正确的,但由于您每次都将其空白,因此没有效果)
  3. 用找到的 ProjectName 覆盖选择,
  4. 导航到#requestPage。

如果我是正确的,这只会让您在循环完成后找到最后一个“ProjectName”,从而有效地为您提供只有一个选项的选择。尝试将 optionlist 变量、选项列表的实际填充以及在each()之外的重定向:

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";
}

我没有对此进行测试,但我认为这是问题所在。

此外,您正在覆盖默认选择的“--Select PID--”选项。要解决此问题,您还可以将选项列表定义重写为:

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

或者,按照joerajeev的建议,使用 .append() 而不是 html()。

于 2012-07-25T11:55:23.740 回答