2

我在将 POST 请求从 jQuery 发送到在 Flask 中创建的服务器时遇到问题。在 Chrome 的 POSTMAN 扩展中,一切似乎都运行良好 - 响应被发送回客户端。从 java 脚本发送请求时,我收到“415 Unsupported Media Type”错误。Python(3.4.x) 烧瓶服务器具有以下功能:

from flask import Flask, jsonify, render_template, request

@app.route('/checers/register', methods=['POST'])
def register():
    clientId = 1
    print ("new client id: {0}".format(clientId))
    ret = {"clientId" : clientId};
    return jsonify(ret)

就像我说的,来自 POSTMAN 参数:

网址:http://localhost:8080/checers/register;标题:内容类型;值:应用程序/json;块引用

使 POST 请求工作正常。在 java 脚本应用程序中,我尝试了两种方法:首先使用 XMLHttpRequest:

function register3() {
    var xmlhttp;
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function ()
    {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
        {
            alert(xmlhttp.responseText);
        }
    };
    xmlhttp.open("POST", "http://localhost:8080/checers/register", true);
    xmlhttp.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
    xmlhttp.send("");
}

第二个是 jQuery:

function register() {
    var arr = {a : "a"};
    $.ajax({
        url: "http://localhost:8080/checers/register",
        type: "POST",
        // The key needs to match your method's input parameter (case-sensitive).
        data: JSON.stringify(arr),
            contentType: "application/json; charset=utf-8",
        accept: 'application/json',
        dataType: "json",
        success: function(data){alert(data);},
        error: function(errMsg) {
            alert(errMsg);
        }
    });
}

当然,我尝试过 Stack 中提出的不同变体,但没有任何效果。我是 Flask 和 JS 的新手,这是我为此苦苦挣扎的第二天。我在烧瓶服务器中找到了一些关于跨域调用 OPTIONS 方法问题的信息,也许是这种情况?最近有人在纠结这个吗?

4

0 回答 0