我需要循环使用jQuery。有时我的查询返回的行多,所以我想检查查询是否返回多行。我想查看所有p标记中的输出(一个接一个)。我写了代码,它只给出查询的最后一行。如何返回<p>标记中的所有行?我的代码有什么错误?

 <p id="prodDeccarea"> </p>


$("#slsNo").keyup(function () {
    $("#hsCode").val(null);
    $("#slsiUnit").val(null);
    var slsNo = $("#slsNo").val();
    $.ajax({
        type: 'GET',
        url: '${pageContext.request.contextPath}/restservice/ViewProd/' + slsNo,
        success: function (result) {
            var jString = JSON.stringify(result);
            var jdata = JSON.parse(jString);
            for (var x = 0; x < jdata.length; x++) {
                if (1 < jdata.length) {
                    var td1 = jdata[x].itemDesc;
                    var td2 = jdata[x].hsCode;
                    var td3 = jdata[x].slsiUnit;
                    $("#prodDeccarea").html("Your product catagory is " + jdata[x].itemDesc + ".");

                } else {
                    var td1 = jdata[x].itemDesc;
                    var td2 = jdata[x].hsCode;
                    var td3 = jdata[x].slsiUnit;
                    $("#hsCode").val(td2);
                    $("#prodDeccarea").html("Your product catagory is " + td1 + ".");
                    if (td3 == "1") {
                        $("#slsiUnit").val("UNIT1");
                    }
                    if (td3 == "2") {
                        $("#slsiUnit").val("UNIT2");
                    }
                    if (td3 == "3") {
                        $("#slsiUnit").val("UNIT3");
                    }
                    if (td3 == "4") {
                        $("#slsiUnit").val("UNIT4");
                    }
                    if (td3 == "5") {
                        $("#slsiUnit").val("UNIT5");
                    }
                    if (td3 == "6") {
                        $("#slsiUnit").val("UNIT6");
                    }
                }
            }
        }
    }
    );
});

最佳答案

您的代码中有一些问题

让我们分析一下它们:-)

您正在使用条件,当jdata中数组for-loop的长度=== 1时。将该逻辑从for-loop移到外面。

for (var x = 0; x < jdata.length; x++) {
    if (1 < jdata.length) {
    ^


您将覆盖以前调用函数.html(...)的内容。因此,您将丢失以前的HTML。

$("#prodDeccarea").html("Your product catagory is " + td1 + ".");
                       ^


您正在对已经为JSON的字符串进行字符串化,只需对其进行解析即可。

var jString = JSON.stringify(result);
                   ^


您有多个条件可以根据tdr3的值设置一个值。只需使用该值并将其设置为元素即可。即:$("#slsiUnit").val("UNIT" + td3);

if (td3 == "1") { <- Here
    $("#slsiUnit").val("UNIT1");
}
if (td3 == "2") { <- Here, and so on
    $("#slsiUnit").val("UNIT2");
}


查看这些代码片段以及这些修复程序



$("#slsNo").keyup(function() {
  $("#hsCode").val(null);
  $("#slsiUnit").val(null);
  var slsNo = $("#slsNo").val();
  $.ajax({
    type: 'GET',
    url: '${pageContext.request.contextPath}/restservice/ViewProd/' + slsNo,
    success: function(result) {
      var jString = JSON.stringify(result);
      var jdata = JSON.parse(jString);

      if (jdata.length === 1) {
        var td1 = jdata[0].itemDesc;
        var td2 = jdata[0].hsCode;
        var td3 = jdata[0].slsiUnit;
        $("#hsCode").val(td2);
        $("#prodDeccarea").html("Your product catagory is " + td1 + ".");
        $("#slsiUnit").val("UNIT" + td3);

        return;
      }

      for (var x = 0; x < jdata.length; x++) {
        var td1 = jdata[x].itemDesc;
        var td2 = jdata[x].hsCode;
        var td3 = jdata[x].slsiUnit;
        var $prodDeccarea = $("#prodDeccarea");
        $prodDeccarea.html($prodDeccarea.html() + '<p>' + "Your product catagory is " + jdata[x].itemDesc + "." + "</p>");
      }
    }
  });
});

09-18 09:02
查看更多