AJAX请求结果为空-清除我们的HTML输入字段


AJAX Request with empty result - clear our HTML input field

我有一个选择菜单,当用户做出选择时,它会向PHP脚本发出AJAX请求,以查询数据库,并返回与选择匹配的值,并将其插入相关的输入字段。

这一切都很好,但我现在需要考虑可能返回空结果的可能性(到目前为止,总是返回匹配的结果)。如果是这种情况,则需要从关联的输入字段中删除值/清除此输入字段。

以下是成功的AJAX请求返回的内容(JSON数据):

[{"senderMobile":"0412 345 678"}]

以下是空结果返回的内容:

[{"senderMobile":""}]

以下是AJAX代码,它调用PHP脚本并更新输入字段:

$(document).ready(function() {
  $("#smsFromName").change(function() {
    var smsFromName = $("#smsFromName").val();
    console.log(smsFromName);
    $.post('getSMSSender.php', {
      senderName: smsFromName
    }, function(data) {
      data = JSON.parse(data);
      if (data.error) {
        alert("error");
        $("#smsFrom").html('');
        return; // stop executing this function any further
      } else {
        console.log(data[0].smsFrom);
        $("#smsFrom").val(data[0].senderMobile);
      }
    }).fail(function(xhr) {
      $("#smsFrom").html('');
    });
  });
});

我想我需要更新这一部分,以包括一个选项,如果没有数据,只需清除#smsFrom输入字段:

} else { 
console.log( data[0].smsFrom );
$("#smsFrom").val(data[0].senderMobile);

但我在这一点上被难住了。

您只需要检查senderMobile是否有值。试试这个:

if (data.error) {
    alert("error");
    $("#smsFrom").html('');
    return; // stop executing this function any further
} else if (data[0] && data[0].senderMobile) {
    console.log(data[0].smsFrom);
    $("#smsFrom").val(data[0].senderMobile);
} else {
    $("#smsFrom").val(""); // or .html(""); I didn't get what kind of element is this...
}

您可以尝试检查响应数据中是否有空字符串。代码应该是这样的:

$(document).ready(function() {
  $("#smsFromName").change(function() {
    var smsFromName = $("#smsFromName").val();
    console.log(smsFromName);
    $.post('getSMSSender.php', {
      senderName: smsFromName
    }, function(data) {
      data = JSON.parse(data);
      if (data.error) {
        alert("error");
        $("#smsFrom").html('');
        return; // stop executing this function any further
      } else {
        if(data[0].senderMobile == ""){
           $("#smsFrom").empty();
           continue;
        }else {
         console.log(data[0].smsFrom);
         $("#smsFrom").val(data[0].senderMobile);
         }
      }
    }).fail(function(xhr) {
      $("#smsFrom").html('');
    });
  });
});