3

我的网络服务将有关发生错误的详细信息放在 http 正文中。如何在 dojo 请求中访问此详细信息。

例如,http 错误如下所示:

HTTP/1.1 500 Internal Server Error
Transfer-encoding: chunked
Content-type: application/json
Date: Tue, 18 Sep 2012 18:47:31 GMT

15
This is my exception!
0

我的 Dojo 请求如下所示:

require(["dojo/dom", "dojo/on", "dojo/request",
        "dojo/json", "dojo/domReady!"],
    function(dom, on, request, JSON){
        // Results will be displayed in resultDiv
        var resultDiv = dom.byId("errorResult");

        // Attach the onclick event handler to the makeRequest button
        on(dom.byId('errorButton'),"click", function(evt){
            request.get("./rest/test/error", {
                // Parse data from JSON to a JavaScript object
                handleAs: "json"
            }).then(function(data){
                resultDiv.innerHTML = "Username: " + data.name + "</br>Role:" + data.role;
            },
            function(error){
                // Display the error returned
                resultDiv.innerHTML = error;
            });
        });
    }
);

中显示的错误是:

RequestError: Unable to load ./rest/test/error status: 500

我想要的是正文中的文字:

This is my exception!
4

2 回答 2

3

看看我对如何检索 AMD 化 Dojo 的 XHR 响应代码(+时间戳)的回答?

使用deferred.response.then代替deferred.then

var deferred = request.get("./rest/test/error", { handleAs: "json" });

deferred.response.then(
    // success
    function(response) {
        console.log("data:", response.data);      // parsed json
        console.log("http body:", response.text); // raw text
    },
    // error
    function(error) {
        var response = error.response;
        console.log("http body:", response.text);
    }
);

在 jsFiddle 上查看它的实际效果:http: //jsfiddle.net/phusick/SGh5M/

于 2012-09-19T07:23:39.350 回答
0

当我将dojo 用于Ajax 请求时,错误方法总是有多个参数。我认为第一个参数是发送的请求,第二个参数是响应或异常。

尝试在您的方法中添加第二个参数,看看它是否包含您需要的内容。

于 2012-09-18T20:31:02.133 回答