.append <select>标记,使用AJAX调用XML </select>

时间:2012-03-02 21:18:20

标签: jquery xml ajax

我有这些代码。除了调用XML数据外,一切都有效。我不知道为什么。我怀疑这是因为选择器,但我已经尝试了我认为可以工作的一切。

function addPart() {
  var pn = document.getElementById("pn").value;
  $(this.parentNode).prepend("<div id='part" + pn + "' class='show'><select id='pselect" + pn + "'></select></div>");
  $("pselect" + pn).append(function(){
    $.ajax({
      type: "GET",
      url: "test.xml",
      dataType: "xml",
      success: function(xml) {
        $(xml).find('value').each(function(){
          var value = $(this).text();
          $("#pselect" + pn).append("<option value='" + value + "'>" + value + "</option>");
        });
      }
    });
  });
  $("#part" + pn).append("<span style='font-weight: bold;'>  QTY:  </span><input name='QTY' type='text' style='width: 20px;'>&nbsp; &nbsp;<a href='#' onClick='removeItem(\"#part" + pn + "\")'>Remove</a><p> </p>");
  pn = (pn - 1) + 2;
  document.getElementById("pn").value = pn;
}

function removePart(id) {
  $(id).remove();
}

XML看起来像这样:

<?xml version="1.0" encoding="iso-8859-1" ?> 
<test>
  <value>Text1</value>
  <value>Text2</value>
  <value>Text3</value>  
</test>

1 个答案:

答案 0 :(得分:1)

您提供的代码看起来有两个问题。变量pn既用作整数又用作字符串,造成一些混淆。 ajax也出现在重复附加内?

        function addPart() {
            var pn = $("#pn").val();
            var textpn=pn;
            $("pselect + textpn).prepend("<div id='part" + textpn + "' class='show'><select id='pselect" + textpn + "'></select></div>");
            //$("pselect" + pn).append(function(){
                $.ajax({
                    type: "GET",
                    url: "test.xml",
                    dataType: "xml",
                    success: function(xml) {
                        $(xml).find('value').each(function(){
                            var value = $(this).text();
                            $("#pselect" + textpn).append("<option value='" + value + "'>" + value + "</option>");
                        });
                    }
                });
            //});
            $("#part" + textpn).append("<span style='font-weight: bold;'>  QTY:  </span><input name='QTY' type='text' style='width: 20px;'>&nbsp; &nbsp;<a href='#' onClick='removeItem(\"#part" + textpn + "\")'>Remove</a><p> </p>");
            pn++;
            $("#pn").val(pn)
        }

        function removePart(id) {
          $(id).remove();
        }