Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Blueimp文件上载AngularJSON前缀_Javascript_Json_Angularjs_Spring_Blueimp - Fatal编程技术网

Javascript Blueimp文件上载AngularJSON前缀

Javascript Blueimp文件上载AngularJSON前缀,javascript,json,angularjs,spring,blueimp,Javascript,Json,Angularjs,Spring,Blueimp,我使用的是blueimp文件上传angularjs版本,大部分都能正常工作。我唯一有问题的地方是json响应的解析 正如angularjs团队在此推荐的那样-$http-所有类型为application/json的服务器响应都以“]}”作为前缀,\n angularjs非常聪明,可以将其剥离 我想知道在blueimp中我在哪里可以截取/预处理响应以去除前缀,因为它在默认情况下不会发生并导致json解析错误 我有一个spring mvc应用程序,它带有MappingJacksonHttpMessa

我使用的是blueimp文件上传angularjs版本,大部分都能正常工作。我唯一有问题的地方是json响应的解析

正如angularjs团队在此推荐的那样-$http-所有类型为application/json的服务器响应都以“]}”作为前缀,\n angularjs非常聪明,可以将其剥离

我想知道在blueimp中我在哪里可以截取/预处理响应以去除前缀,因为它在默认情况下不会发生并导致json解析错误

我有一个spring mvc应用程序,它带有MappingJacksonHttpMessageConverter类,处理所有应用程序/json类型的响应,并且据我所知,无法禁用特定请求


提前感谢。

对于其他有相同问题的人,我通过在我的Spring MVC file upload controller类方法中添加一个名为NoJsonPrefix的响应头来解决这个问题。然后,我扩展Spring MappingJacksonHttpMessageConverter并检查是否有NoJsonPrefix的响应头。如果存在json响应,则不加前缀。对于不应在json响应前面加前缀的奇数情况,这很好

HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.set("NoJsonPrefix", "true");
return new ResponseEntity<Map<String, Object>>(generateResponse(documentDto), responseHeaders, HttpStatus.OK);

public class PrefixedMappingJacksonHttpMessageConverter extends MappingJacksonHttpMessageConverter {

@Value("${http.response.json.prefix}")
private boolean prefixJson;

@Override
protected void writeInternal(Object object, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
    JsonEncoding encoding = getJsonEncoding(outputMessage.getHeaders().getContentType());
    JsonGenerator jsonGenerator = getObjectMapper().getJsonFactory().createJsonGenerator(outputMessage.getBody(), encoding);

    if (getObjectMapper().getSerializationConfig().isEnabled(SerializationConfig.Feature.INDENT_OUTPUT)) {
        jsonGenerator.useDefaultPrettyPrinter();
    }

    String noJsonPrefix = outputMessage.getHeaders().getFirst("NoJsonPrefix");
    try {
        if (this.prefixJson && noJsonPrefix == null) {
            jsonGenerator.writeRaw(")]}',\n");
        }
        getObjectMapper().writeValue(jsonGenerator, object);
    } catch (JsonProcessingException ex) {
        throw new HttpMessageNotWritableException("Could not write JSON: " + ex.getMessage(), ex);
    }
}
}

<mvc:annotation-driven ignoreDefaultModelOnRedirect="true">
    <mvc:message-converters>
        <bean class="com.***.web.security.PrefixedMappingJacksonHttpMessageConverter">
            <property name="prefixJson" value="${http.response.json.prefix}" />
        </bean>
        <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
        <bean class="org.springframework.http.converter.FormHttpMessageConverter" />
    </mvc:message-converters>
</mvc:annotation-driven>