为什么我使用jquery ajax和python瓶获得500内部服务器错误?

时间:2016-02-12 09:22:22

标签: jquery python ajax bottle internal-server-error

我正在尝试执行此AJAX帖子但由于某种原因我收到服务器500错误。我在python代码中看不到任何错误。所以问题似乎在于回调。我发布了我目前正在使用的代码。任何人吗?

Html表单部分是表单编写方式的前端html部分

<form method="post"  id="uploadform" onsubmit="formupload()"  enctype="multipart/form-data">
    <div class="form-group">
        <input type="file" id="exampleInputFile" name="file">
    </div>
    <div class="form-group ">
        <button type="submit" class="btn btn-primary pull-right" id="upload_button">Upload File</button>
    </div>
</form>

对python代码进行AJAX调用并警告'upload fail':

function formupload(){
    event.preventDefault();
    $.ajax({
        url: '/uploadEmpData',
        type: 'POST',
        data: $('#uploadform').serialize(),
        dataType: 'json',
        success: function(data){
            alert(data);
            alert('file uploaded successfully');
        },
        error: function(data){
            alert('upload fail');
            //console.log(error);
        }
    });
}

创建函数并从AJAX请求接收数据的python瓶子部分:

def uploadEmpData():
data = request.files.get('file')
data.save('files/',overwrite=True)
if data and data.file:
    return json_dumps("File uploaded successfully")
return json_dumps({'error':'Permission Denied.'})

2 个答案:

答案 0 :(得分:0)

在没有阻止提交的情况下,你就是在忙碌。

删除onsubmit="formupload()"并将脚本更改为此,假设它首先可以正常工作。

也读一读:How can I upload files asynchronously?

$(function() {
  $("#uploadform").on("submit", function(e) {
    e.preventDefault();

    $.ajax({
      url: '/uploadEmpData',
      type: 'POST',
      data: $('#uploadform').serialize(),
      dataType: 'json',
      success: function(data) {
        console.log(data);
        alert('file uploaded successfully');
      },
      error: function(data) {
        alert('upload fail');
        //console.log(error);
      }
    });
  });
});

答案 1 :(得分:0)

您可以使用而不是&#34;提交&#34;并从您的函数中删除event.preventDefault()然后尝试。如果仍然出现错误,请检查您发送的序列化数据。