ajax 返回字符串值时不工作

ajax not working while returning a String value

我在我的一个 Java 项目中编写了以下 jquery 代码。

$(document).ready(function(){
    $('#searchBid').click(function(){
        alert("reached ajax");
        $.ajax({
            url: "/fetchbookingnumber",
            data: {id:$('#conBid').val()},
            timeout: 10000,
            type: "POST",
            cache: false,
            contentType: "application/x-www-form-urlencoded",
            dataType: "json",
            beforeSend:function(jqXHR, options) {
                if($('#conBid').val()==''){
                    alert("Please enter a BookingID");  
                } 
                return false;
            }
        }).fail(function(jqXHR, textStatus, errorThrown){
            alert("The ajax call failed");
        }).done(function(resp, textStatus, jqXHR){
            $('#conBno').val(resp);
        });
    });
});

数据库返回的值是一个 varchar。在我的 Java 服务器中,我将值存储在字符串中。我面临的问题是,就返回值是数字(数字)而言,ajax 有效,但如果返回的字符串是字母数字,则 ajax 失败并调用 .fail 方法。 我想这背后的原因是

contentType: "application/x-www-form-urlencoded",

我应该如何更改代码才能使 ajax 在这两种情况下都能正常工作。请有人伸出援手。

您真的收到 JSON 数据吗?

如果它是一个简单的字符串,将其设置为:-

DataType: "text"

或者像评论中提到的那样从服务器

发送一个正确的JSON

问题是这一行 dataType: "json",,这意味着服务器将发送一个 json 字符串作为响应。任何其他响应都将导致错误,但 json 编码的 javascript 原语除外。例如一个数值(5、5.9、0x5f、5e2 等)、null、一个字符串("string"、"also a string" 等)请注意文本周围的引号。这是因为许多 json 解析是宽松的并接受这些原语。
如果您设置 return 类型,您应该 return 该类型。