My Ajax POST is coming up as an error even though I am returning 200

蓝咒 提交于 2019-12-24 10:47:23

问题


I am making an AJAX post to a Jersey Resource. I build an image and return it. The issue is, no matter what status I return, Ajax thinks it is an error. I can actually use the error message (via error.responseTest) and it works fine. But it is ugly. What do I return to make it a success? I have returned OK(200), Accepted(202) and Created(201). All of them give me an error message but in my Console Network tab, I get a success (green with the proper status).

I am returning it like this:

    return Response.status(Response.Status.ACCEPTED).entity(image).header('Content-Type',"image/png").build();

My JS code:

$.ajax( Monocle.config.Sightline.jobUrl + "/sightline", {
        type: "POST",
        processData: false,
        data: JSON.stringify({
            Lat1: Monocle.Sightline.BBOX(feature,2),
            Long1: Monocle.Sightline.BBOX(feature,1),
            Lat2: Monocle.Sightline.BBOX(feature,4),
            Long2: Monocle.Sightline.BBOX(feature,3),
            OrgLat:observerCoords[0].lat,
            OrgLong:observerCoords[0].lon,
            ObHeight: feature.attributes.observerHeight,
            TargHeight: feature.attributes.targetHeight,
            OuterRadius: feature.attributes.outerRadius,
            LVA: feature.attributes.lowerVertAngle,
            UVA: feature.attributes.upperVertAngle,
            sAzimuth: feature.attributes.startAzimuth,
            eAzimuth: feature.attributes.endAzimuth,
            outputType: "MAX"
        }),
        contentType: "application/json",
        dataType: "json",
        success: function( results ){
            var graphic = new OpenLayers.Layer.Image(
                Monocle.currentWidget.name + " Destination " + featurenum,
                "data:image/png;base64," + results,
                new OpenLayers.Bounds(Monocle.Sightline.BBOX(feature,1), Monocle.Sightline.BBOX(feature,2), Monocle.Sightline.BBOX(feature,3),Monocle.Sightline.BBOX(feature,4)),
                new OpenLayers.Size(580, 288),
                { isBaseLayer: false,
                    opacity: 0.3,
                    displayOutsideMaxExtent: true
                });
            feature.legionObject = graphic;
            graphic.relatedlayer = Monocle.currentWidget.name + " Destination " + featurenum;

            Monocle.Map.map.addLayer(graphic);
        },
        error: function(errMsg) {
            // TODO: really handle any errors

        }
    });

回答1:


Setting dataType: "json", means that your response is to be json which it isn't that would cause the error so just remove it.
Also is your image data has to be base64 encoded to make a data uri.



来源:https://stackoverflow.com/questions/16112628/my-ajax-post-is-coming-up-as-an-error-even-though-i-am-returning-200

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!