2016-02-12 6 views
-1

Я пытаюсь выполнить это сообщение AJAX, но по какой-то причине я получаю ошибку сервера 500. Я не вижу ошибки в коде python. Таким образом, проблема, похоже, связана с обратным вызовом. Я отправляю код, который я использую в настоящее время. Кто угодно?Почему я получаю 500 внутренних ошибок сервера, используя jquery ajax и python bottle?

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> 

Th AJAX вызов к коду питона и оповещает «загрузить сбой»:

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:

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.'}) 
+1

Ошибка 500 означает, что проблема заключается в вашем коде Python на сервере. Проверьте вкладку сети для описания ошибки, возникшей в результате запроса. Также обратите внимание, что вы вызываете 'preventDefault()' на глобальном объекте 'event', возможно, вам нужно изменить это на событие отправки формы. Вы также не можете сериализовать ввод файла. Вам необходимо отправить многостраничный запрос, используя FormData –

ответ

0

0 являются ajaxing без блокировки submit.

Удалить 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); 
     } 
    }); 
    }); 
}); 
+0

Это само по себе не вызовет ошибки 500. На самом деле существует немало проблем, таких как попытка сериализации ввода файла. –

+0

Может быть, если форма отправлена, прерывание ajax – mplungjan

0

Вы можете использовать вместо "Submit" и удалить event.preventDefault() из функции, а затем попробовать. И если он все еще выдаст ошибку, то проверьте сериализованные данные, которые вы отправляете.

+0

Извините, но type = "button" не был напечатан в приведенном выше ответе. Поэтому я хочу сказать, что использовать тип ввода = 'button' вместо «submit» и удалить event.preventDefault() из вашей функции. –