返回String值时ajax不工作

时间:2015-01-07 12:34:25

标签: java jquery ajax

我在我的一个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服务器中,我将值存储在String中。我面临的问题是,只要返回的值是一个数字(数字),ajax工作,但如果返回的字符串是字母数字,则ajax失败并调用.fail方法。 我想这背后的原因是

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

如何更改代码以使ajax在两种情况下都能正常工作。请有人帮忙。

2 个答案:

答案 0 :(得分:1)

您真的收到JSON数据吗?

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

DataType: "text"

或者在评论中提到的luke从服务器发送适当的JSON

答案 1 :(得分:1)

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