jquery ajax- 从函数获取响应字符串
jquery ajax- get response string from a function
我无法从 java 函数获取对 ajax 调用的字符串响应。我正在使用 structs2 。我写了一个 java 函数,returns 一个字符串。该功能正常工作。但是 ajax 调用中存在一些未知错误。
以下是我的jqueryajax通话
<pre>
function saveMyId(){
$.ajax({
url : contextPath+'/action/setMyId',
data: {
myCode:$("#myCode").val(),
myId:$("#myId").val()
},
type : 'post',
async: false,
success : function(data) {
alert(data);
if(data=="success"){
$( "#dialog" ).dialog("close");
$('#myId_Validator').text("");
}
else{
$("#myId").val("");
$("#myId_Validator").val("ID Already exists. Please Choose different one")
}
},
error: function (request, status, error) {
alert("Something went wrong. Please try again later");
}
});
我的 java 函数是
public String setMyId() throws SQLException {
IdAllocationVO idAllocationVO = new IdAllocationVO();
MyIdServices myIdServices = new MyIdServices();
logger.debug("set My Id , myCode :"+this.myCode);
idAllocationVO.setMyCode(myCode);
idAllocationVO.setMyId(myId);
int response= myIdServices.getMyIdCount(myId);
System.out.println("response:"+response);
if(response==0){
myIdServices.setSenderId(idAllocationVO);
return "success";
}
else{
return "fail";
}
}
我正在使用结构 2
structs.xml 标签是
<action name="setMyId" class="com.id.myIsservice.struts.IdAction" method="setMyId">
</action>
setMyId() 函数运行正常。我已经通过打印每一行来检查所有内容。但我的问题是 ajax 调用得到的结果是错误的。所以它会提示错误消息 "Something went wrong. Please try again later"。为什么会这样?
您可以尝试使用三个步骤来查找原因:
1、你的ajax调用是否正确?
firebug 或者其他页面调试器可以给你看~
2、当第1步正确后,检查java函数,看它是否从页面获取请求并向页面响应正确的结果
IDE调试工具来帮你~
3、查看分页得到了什么结果
通过firebug可以看到响应的详细信息,比如'status'之类的...,看看有没有得到字符串~
PS:
我明白了,你的 java 代码没有使用 try/catch 直接抛出异常。对用户使用来说不是一个好方法~建议你加上try/catch代码,也许可以帮助你更快的发现错误~
我无法从 java 函数获取对 ajax 调用的字符串响应。我正在使用 structs2 。我写了一个 java 函数,returns 一个字符串。该功能正常工作。但是 ajax 调用中存在一些未知错误。
以下是我的jqueryajax通话
<pre>
function saveMyId(){
$.ajax({
url : contextPath+'/action/setMyId',
data: {
myCode:$("#myCode").val(),
myId:$("#myId").val()
},
type : 'post',
async: false,
success : function(data) {
alert(data);
if(data=="success"){
$( "#dialog" ).dialog("close");
$('#myId_Validator').text("");
}
else{
$("#myId").val("");
$("#myId_Validator").val("ID Already exists. Please Choose different one")
}
},
error: function (request, status, error) {
alert("Something went wrong. Please try again later");
}
});
我的 java 函数是
public String setMyId() throws SQLException {
IdAllocationVO idAllocationVO = new IdAllocationVO();
MyIdServices myIdServices = new MyIdServices();
logger.debug("set My Id , myCode :"+this.myCode);
idAllocationVO.setMyCode(myCode);
idAllocationVO.setMyId(myId);
int response= myIdServices.getMyIdCount(myId);
System.out.println("response:"+response);
if(response==0){
myIdServices.setSenderId(idAllocationVO);
return "success";
}
else{
return "fail";
}
}
我正在使用结构 2 structs.xml 标签是
<action name="setMyId" class="com.id.myIsservice.struts.IdAction" method="setMyId">
</action>
setMyId() 函数运行正常。我已经通过打印每一行来检查所有内容。但我的问题是 ajax 调用得到的结果是错误的。所以它会提示错误消息 "Something went wrong. Please try again later"。为什么会这样?
您可以尝试使用三个步骤来查找原因: 1、你的ajax调用是否正确? firebug 或者其他页面调试器可以给你看~ 2、当第1步正确后,检查java函数,看它是否从页面获取请求并向页面响应正确的结果 IDE调试工具来帮你~ 3、查看分页得到了什么结果 通过firebug可以看到响应的详细信息,比如'status'之类的...,看看有没有得到字符串~
PS: 我明白了,你的 java 代码没有使用 try/catch 直接抛出异常。对用户使用来说不是一个好方法~建议你加上try/catch代码,也许可以帮助你更快的发现错误~