从#document响应中提取数据

时间:2018-04-30 09:22:05

标签: javascript java

我在Java中有这个控制器:

@Controller
public class Controller1 {

    //....

    @RequestMapping(value = "/demo/web/rest/post/create/bim/project", method = RequestMethod.POST)
    public @ResponseBody Long createProject(@ModelAttribute UploadDescriptionFileDemo file, BindingResult result) {
        if (file.getName().trim() != "") {
            if (result != null) 
                file.setBindingResult(result);
            Long res = createProjectDemoSA.createProject(file);
            return res;
        } else {
            return EMPTY_NAME;
        }
    }
}

我用这样的ajax称呼它:

$.ajax({
            url : url,
            cache: false,
            contentType: false,
            processData: false,
            type: "POST",
            data : formData,
            beforeSend : function(request) {
                request.setRequestHeader(token.name, token.value, 'enctype',
                        'multipart/form-data');
            },
            success : (res) => {
                console.log(res);

            },
            error: (error) => {
                console.log(error);
            })

当我用ajax调用这个控制器时,一切正常,我从控制器得到这个响应:

#document <Long xmlns="">200</Long>

我希望得到“200”的值。

我试图通过在成功部分的ajax中执行此操作来获得此值。

let xmlDoc = $.parseXML(res);
let $xml = $( xmlDoc );
let  $title = $xml.find( "Long" );

但我没有得到<Long> </Long>

之间的值

1 个答案:

答案 0 :(得分:0)

摆弄这段代码, 看来你首先需要删除#document字符串(它是响应的一部分吗?因为ajax返回字符串除非另有说明),然后你的代码就可以了。

为了将实际200转换为$title,您还需要添加:

let  $title = $xml.find( "Long" ).text();

如此完整的代码:

let xmlDoc = $.parseXML(res.replace('#document',''));
let $xml = $( xmlDoc );
let  $title = $xml.find( "Long" ).text();

这对我来说对这个字符串很有用:

#document <Long xmlns="">200</Long>