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代码,也许可以帮助你更快的发现错误~