如何从XHR获取解析的请求数据

时间:2016-07-18 16:12:18

标签: javascript python flask xmlhttprequest

我使用以下代码从javascript向Flask服务器发送POST请求:

var form = document.getElementById('addbug');
fd = new FormData(form);

function senddata() {
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange=function() {
        if (xhr.readyState == 4 && xhr.status == 200) {
            console.log("Response Received");
        }
    }
    xhr.open('POST', '/addbug');
    xhr.setRequestHeader('Content-type','binary/octet-stream');
    xhr.setRequestHeader('Content-transfer-encoding','binary');
    xhr.setRequestHeader('X-Requested-With','XMLHttpRequest');
    fd.append('bug_summary',document.getElementById('bug_summary').value);
    fd.append('csrf_token',document.getElementById('csrf_token').value);
    xhr.send(fd);
    return false;
}

当我在python脚本中读取这些数据时,我面临两个问题:

  1. 未填充变量request.form ['addbug'] - 即为空。以下命令:

    print(str(request.form))
    

    返回     ImmutableMultiDict([])

  2. 我只能使用request.get_data函数访问的请求体确实有数据,但格式如下:

    ------WebKitFormBoundaryG4ehfDXtXEwIsktm
    Content-Disposition: form-data; name="bug_summary"
    
    test bug
    ------WebKitFormBoundaryG4ehfDXtXEwIsktm
    
  3. 如何以最干净的方式从请求正文中获取数据?最好的选择是使用request.form条目,但似乎因为我使用XMLHttpRequest选项而不是烧瓶标准表单提交我不能使用它。是否有任何良好的解析选项来读取请求表单数据,或者我是否需要自己编写解析代码?

0 个答案:

没有答案