我在我的一个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在两种情况下都能正常工作。请有人帮忙。
答案 0 :(得分:1)
您真的收到JSON数据吗?
如果它是一个简单的字符串,则将其设置为: -
DataType: "text"
或者在评论中提到的luke从服务器发送适当的JSON
答案 1 :(得分:1)
问题是这一行dataType: "json",
,这意味着服务器将发送一个json字符串作为响应。任何其他响应都将导致错误,但json编码的javascript primatives除外。例如一个数值(5,5.9,0x5f,5e2等),null,一个字符串(“string”,“也是一个字符串”等)注意文本周围的引号。这是因为许多json解析都是宽松的并接受这些原语
如果设置了返回类型,则应返回该类型。