Данные Ajax Success возвращают полную HTML-страницу

Я использую JSP-страницу класса iFrame с полем выбора даты. При выборе даты из средства выбора я отправляю дату в действие Struts, используя вызов jQuery AJAX, как показано ниже:

$( "#datepickerStart" ).datepicker({
  onSelect: function(dateText, instance) {//date select from picker to trigger
  $.ajax({
    type: "Post",// post method
    url: 'checkAvailability.do?operation=getlist&datepickerStart='+ ("#datepickerStart").val(), // passing URL with date value to STRUTS Action
    data: "date="+date,
    //dataType: "application/json",
    success: function(data) {
      alert(data); //getting with the complete HTML page
    }
  }); 
 }
});

И из БД я получаю результаты в LIST и преобразовываю в объект JSON, как показано ниже:

Gson gson = new Gson();// Using google GSON to convert to JSON
String json = new Gson().toJson(lRList);
response.setContentType("application/json");// setting content type
response.setCharacterEncoding("UTF-8"); //setting character encoder
response.getWriter().write(json);// writing to response the JSON object
System.out.println("JSON Object::"+json);

И в стандартном выводе дает мне такой результат:

JSON Object::[{"bookDate":"2014-07-11","fromTime":"2:00PM","totime":"3:30PM","userID":"XXX","isSuccess":false},
{"bookDate":"2014-07-11","fromTime":"10:30AM","totime":"11:00AM","userID":"XXX","isSuccess":false}]

Но предупреждение об успехе Ajax дает полную HTML-страницу :(. Мне нужны эти данные и я хочу заполнить значения в том же JSP, показав их в таблице div. Так может ли кто-нибудь помочь мне в этом, чтобы решить эту проблему, и дайте мне знать, где Я делаю ошибку...


person Anonymous    schedule 16.08.2014    source источник
comment
Вы пытались установить тип данных как json и что происходит на сервере (jsp)?   -  person toesslab    schedule 17.08.2014
comment
Если я использую тип данных как JSON, я не могу сделать сам вызов AJAX   -  person Anonymous    schedule 20.08.2014


Ответы (2)


я думаю, вы должны использовать get вместо post в вызове ajax

    $( "#datepickerStart" ).datepicker({
      onSelect: function(dateText, instance) {//date select from picker to trigger
      $.ajax({
        type: "get",
        url: 'checkAvailability.do?operation=getlist&datepickerStart='+         ("#datepickerStart").val(), // passing URL with date value to STRUTS Action
        data: "date="+date,
        //dataType: "application/json",  
        success: function(data) {
          alert(data); //getting with the complete HTML page
        }
      }); 
     }
    });
person mfarouk    schedule 16.08.2014
comment
Никаких улучшений :( тот же HTML-контент, только возвращающийся - person Anonymous; 16.08.2014
comment
вы пытались просмотреть тот же URL-адрес из своего браузера, он должен вернуть объект JSON, если все правильно, если он по-прежнему возвращает полную страницу, я предлагаю вам проверить страницу JSP - person mfarouk; 17.08.2014

настроить ошибку AJAX, чтобы получить ошибку, например:

$.ajaxSetup({
    error: function(jqXHR, e) {
        var msg = '';
        if(jqXHR.status==0){
            msg = 'You are offline!!\n Please Check Your Network.';
        }else if(jqXHR.status==404){
            msg = 'Requested URL not found.';
        }else if(jqXHR.status==500){
            msg = 'Internal Server Error.<br/>'+jqXHR.responseText;
        }else if(e=='parsererror'){
            msg = 'Error: Parsing JSON Request failed.';
        }else if(e=='timeout'){
            msg = 'Request Time out.';
        }else {
            msg = 'Unknow Error.<br/>'+x.responseText;
        }

        console.log('error: '+jqXHR.responseText);
        console.log('Error msg: '+msg);     
    }
});

а затем установите тип данных как json в вашем вызове AJAX в качестве вашего ответа в формате Json, например:

$("#datepickerStart").datepicker({
  onSelect: function(dateText, instance) {
  $.ajax({
    type: "post",
    url: 'checkAvailability.do?operation=getlist&datepickerStart='+$("#datepickerStart").val(),
    data: "date="+date,
    dataType: 'json',
    success: function(data) {
      alert(JSON.stringify(data));
    }
  }); 
 }
});

также вы забыли поставить $ начиная с ("#datepickerStart").val()

для получения дополнительной справки проверьте мое приложение

person Abhishek Nayak    schedule 18.08.2014