Jquery getJson请求被取消

时间:2013-08-13 18:50:56

标签: javascript jquery html css jetty

当我在本地主机上运行我们的Google Analytics应用程序(来自调试器)时,它会完美加载。但是,当我上传到服务器时,GET请求被取消。

这是网络响应的屏幕截图:

enter image description here

你怎么建议我解决这个问题?

以下是服务器的响应代码

/**
     * Sends a JSON response for an object (200)
     * @param objectToEncode
     * @throws Exception
     */
    private void sendJSONResponse(Object objectToEncode, Request baseRequest, HttpServletResponse response) throws Exception{

        //Encode object into JSON
        String jsonString = new Gson().toJson(objectToEncode);
        byte[] utf8JsonString = jsonString.getBytes("UTF8");

        response.setContentLength(utf8JsonString.length);
        response.setHeader("Cache-Control", "no-cache");
        response.setContentType("text/x-json;charset=UTF-8");           
        response.setStatus(200);

        try {
            //Actually send the response
            response.getWriter().write(jsonString);

        } catch (Exception e) {

            // TODO: handle exception
            e.printStackTrace();
        }

    }

Javascript请求:

/*
         Draws the chart for average session length by day
         */
        function drawUsersGender() {

            //Apit to get the data from
            var api = GET_USERS_SEX;

            //Request data (using jquery/ajax)
            $.getJSON(api,function(data){

                //Start a days and seconds array
                var result = [['gender', 'number']];

                //Iterate over the genders
                for (var gender in data){

                    //Get the value pair and push
                    var entry = [gender, parseInt(data[gender])];
                    result.push(entry);
                }

                //Parse to google data
                var data = google.visualization.arrayToDataTable(result);

                //Display options
                var options = {
                    title:'Gender for registered users',
                    'width':600,
                    'height':400
                };

                //Draw the chart
                var chart = new google.visualization.PieChart(document.getElementById('genderChart'));
                chart.draw(data, options);
            });
        }

1 个答案:

答案 0 :(得分:5)

而不是$.getJSON,您需要使用

$.ajax({
     url:GET_USERS_SEX,
     dataType: 'jsonp',
     success:function(json){
         // handle the json response
     },
});

这是因为正常的JSON响应需要来自同一台服务器。 JSONP没有跨域限制。

或者您可以确保使用与在浏览器网址中使用的域名完全相同的域名请求JSON。