【问题标题】:Can´t get server response from object XMLHttpRequest无法从对象 XMLHttpRequest 获取服务器响应
【发布时间】:2013-11-26 00:44:39
【问题描述】:

由于 REST 调用,我无法从对象 XMLHttpRequest 获得响应。我知道结果在对象内部,因为当我有结果要返回时对象大小更大,但无论如何我都无法访问它们。这是我对服务器的 javascript 请求:

function getMarkersByCategory(category) {
      var urlServer = 'http://localhost:8080/api/mapit/getcategory';
      return loadContent(urlServer,category);
}

function loadContent(url, category) {
     var mypostrequest = new ajaxRequest();
     mypostrequest.onreadystatechange = function() {
     if (mypostrequest.readyState == 4) {
         if (mypostrequest.status == 200 || window.location.href.indexOf("http") == -1)     {
              return displayMarkers(mypostrequest);
          }

     else {
         alert("An error has occured making the request");
          }
     }
     }

     var parameters = "?category=" + category ;
     mypostrequest.open("GET", url + parameters , true);
     mypostrequest.send(null);
}

function ajaxRequest() {
    var activexmodes = ["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"] //activeX versions to   check for in IE
    if (window.ActiveXObject) { //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
        for (var i = 0; i < activexmodes.length; i++) {
            try {
                 return new ActiveXObject(activexmodes[i]);
            }
             catch (e) {
                //suppress error
            }
        }

    }
    else if (window.XMLHttpRequest) // if Mozilla, Safari etc
       return new XMLHttpRequest();
    else
       return false;
    }

function displayMarkers(data) {
    alert(data);
    var jsonContent = data // I can´t find any property of the object with the response
}

最后这是我的 Java Web 服务的响应:

@GET 
@Produces("text/plain")//I have tried with ("application/json") too
@Path("/getcategory")
public String getByCategory(@QueryParam("category") String category) {
    List<MapItBean> list = mapItPointDao.getMapItPointsByCategory(category);
    String result = MapItBeanHelper.jsonizeMapitList(list);
    System.out.println(result);
    return result;
}

我也尝试过使用 jquery,但我有同样的问题,我无法得到任何回应。 提前致谢。

【问题讨论】:

  • 感谢 jQuery,现在我不知道如何处理内置的 JavaScript 类(并且在原始类型中跨浏览器进行处理)。哈哈。
  • 您的浏览器是否注意到其开发工具中的任何错误(通常以F12Ctrl+Shift+JCommand+Shift+J 打开)?发出此请求的页面是否也来自http://localhost:8080/

标签: java javascript ajax rest


【解决方案1】:

看来您目前正在将XMLHttpRequestActiveXObject 本身作为data 的值传递给displayMarkers

// ...
    return displayMarkers(mypostrequest);

来自服务器的响应将存储在其 responseText property 中,如果是 JSON,则将存储在 need to be parsed 中。

// ...
    return displayMarkers(JSON.parse(mypostrequest.responseText));

当然,假设发出此请求的页面也在http://localhost:8080/ 上。如果涉及另一个来源(或在file:// 的情况下缺少来源),则more work is required to allow the request

【讨论】:

  • 我猜 response 应该在 responseText 属性中,但是是空的。
猜你喜欢
  • 2016-10-08
  • 2017-06-25
  • 2015-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多