无法将JSONObject从JAVA类传递给jsp

时间:2011-10-19 02:38:08

标签: javascript jquery ajax json

我看过这个example,但我仍然无法在jsp中检索JSON对象。这是我的MyCalendarController.java类中的代码:

public class MyCalendarController implements Controller{

    public ModelAndView handleRequest(HttpServletRequest request,
        HttpServletResponse response) throws Exception {

        if("Add".equals(request.getParameter("action"))){
...
            JSONObject jObj = new JSONObject();
            jObj.put("test", "Success");
            response.getWriter().write(jObj.toString());
...
         }
     return new ModelAndView("mycalendar", "model", myModel);
}

以下是我在jsp中尝试检索它的方法,但警告总是说“未定义”

var queryString = "?action=Add";
    queryString +=  "&t=" + title;
    queryString +=  "&sDT=" + stDate + "T" + stHour + ":" + stMin + ":00";
    queryString +=  "&eDT=" + eDate + "T" + eHour + ":" + eMin + ":00";
$.ajax({
        type:"GET",
        url: "mycalendar.htm" + queryString,
        success: function(response){
                    alert(response.test);
        }
});

注意:我正在尝试在从jsp对类进行ajax调用时创建JSON对象。我是ajax和javascript的新手,所以一定要做错了...请帮忙!!!

在上面提到的代码中, response.responseText 属性是'undefined'。但我尝试了另一种方式:

var ajaxRequest;

try{                                       
    ajaxRequest = new XMLHttpRequest();
}catch (e){
    try{
        ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
    }catch (e) {
        try{
            ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
        }catch (e){
            alert("Your browser broke!");
            return false;
        }
    }
 }

 ajaxRequest.onreadystatechange = function(){
     if(ajaxRequest.readyState == 4){
        alert(ajaxRequest.responseText);
        alert("test: " + ajaxRequest.test);
     }
}



var queryString = "?action=Add";
queryString +=  "&t=" + title;
queryString +=  "&sDT=" + stDate + "T" + stHour + ":" + stMin + ":00";
queryString +=  "&eDT=" + eDate + "T" + eHour + ":" + eMin + ":00";

ajaxRequest.open("GET", "mycalendar.htm" + queryString, true);
ajaxRequest.send(null);

这样我得到ajaxRequest.responseText但警告(“test:”+ ajaxRequest.test); 仍显示未定义

2 个答案:

答案 0 :(得分:1)

var a =  '<%=DropDown.returnList()%>';
var countryObj = JSON.parse(a);
var s = $('#selectCountry');  
 for(var val in countryObj) 
      {          
       $('<option />', {value: val, text: countryObj[val]}).appendTo(s); 
      } 

答案 1 :(得分:0)

尝试alert(response.responseText),我不确定。