AJAX在烧瓶中的优雅降解

AJAX在烧瓶中的优雅降解,ajax,rest,flask,Ajax,Rest,Flask,我正在flask中使用RESTful http方法构建一个应用程序。我有一个页面,上面有两个表单,一个允许用户创建对象一个表单一个按钮,另一个列出现有对象并允许用户删除和修改它们一个表单两个按钮 我已经建立了一个AJAX系统来处理这些表单。根据创建、更新、删除操作的不同,我向服务器发送具有不同标题的请求POST、PUT、delete。在flask方面,我有一个MethodView,其中包含处理这些请求的适当方法 我的问题是没有启用javascript的用户。默认情况下,表单有一个POST操作-但

我正在flask中使用RESTful http方法构建一个应用程序。我有一个页面,上面有两个表单,一个允许用户创建对象一个表单一个按钮,另一个列出现有对象并允许用户删除和修改它们一个表单两个按钮

我已经建立了一个AJAX系统来处理这些表单。根据创建、更新、删除操作的不同,我向服务器发送具有不同标题的请求POST、PUT、delete。在flask方面,我有一个MethodView,其中包含处理这些请求的适当方法

我的问题是没有启用javascript的用户。默认情况下,表单有一个POST操作-但是,我的MethodView被编写为在创建新对象时处理POST,因此它将无法处理整个表单的输入。此外,我的两个表单都将POST作为默认操作,因此现在它们将由相同的函数处理,而不区分它们

在我看来,如何同时支持AJAX和常规表单提交

这是我的更新/删除表单:

<form method="POST" role="form" id="process-form">
    <table>
            <tr>
                <td>
                    <input id="process-selection-0" name="process-selection" type="checkbox" value="1">
                </td>
                <td>
                    <label for="process-selection-0">
                            <a href="/projects/1">
                            aaa
                        </a>
                    </label>
                </td>
            </tr>
    </table>
    <h3>Selected file actions:</h3>
    <button class="btn btn-primary" id="process-process_button" name="action" type="submit" value="0"><span class="glyphicon glyphicon-tasks "></span> Process</button>
    <button class="btn btn-danger" id="process-delete_button" name="action" type="submit" value="-1"><span class="glyphicon glyphicon-remove "></span> Delete</button>
</form>

尝试此更新表单。您可以根据需要指定方法属性值。我的更新和删除表单是一个带有两个按钮的表单。我将把它添加到问题中。您是如何使用jqeury.ajax提交表单的???,您可以添加该代码吗?当然,添加到op中。一切看起来都很好,您可以删除表单中的method=POST并立即尝试吗??
$('form#process-form > #process-process_button').click(function (event) {

    var formData = $( '#process-form' ).serialize()
    console.log("Sending data:")
    console.log(formData)
    // process the form
    $.ajax({
        type         : 'PUT', 
        url          : '/projects/',
        data         : formData,
        dataType     : 'json',
    })
        .done(function (data) {
            console.log(data); 
        });
    event.preventDefault();
});

$('form#process-form > #process-delete_button').click(function (event) {

    var formData = $( '#process-form' ).serialize()
    console.log("Sending data:")
    console.log(formData)
    $.ajax({
        type         : 'DELETE',
        url         : '/projects/',
        data         : formData,
        dataType     : 'json',
    })
        .done(function (data) {
            console.log(data); 
        });
    event.preventDefault();
});