我的Ajax继续将我重定向到页面http://localhost:8000/process/
即使它不应该。我对ajax相当陌生,我只是从youtube视频中获得了此ajax代码。
HTML
<form action= "{% url 'process' %}" method="POST" enctype="multipart/form-data" class="w-100" id="form_submit">
{% csrf_token %}
<div class="col-sm-4 mx-auto">
<input type="file" name="pcap_file" id="pcap_file" required="True" class="form-control-file text-center w-100">
</div>
<div class="row h-50">
<div class="col-sm-3 mx-auto">
<input type="submit" value="testing" class="w-100" id="testbtn" data-toggle="modal" data-target="#exampleModal">
</div>
</div>
</form>
脚本
<script type = "text/javascript">
$(document).on('submit','#form_submit',function(e){
e.preventDefault();
$.ajax({
type:'POST',
url:'/process/',
data:{
pcap_file:$('#pcap_file').val
csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]')
.val()
},
success:function(){
alert("okay")
}
});
});
</script>
Views.py
def process(request):
if "GET" == request.method:
return HtppResponce("error")
myfile = request.FILES["pcap_file"]
print(myfile)
#classpercent = SOM(myfile)
return HttpResponse('')
URL
urlpatterns = [
url(r'^$', views.home, name='home'),
url(r'^process/$',views.process, name='process'),
path('admin/', admin.site.urls),
]
发布请求的状态码为OK。
答案 0 :(得分:0)
您的JavaScript应该看起来像这样:
$(function() {
$('#form_submit').submit(function upload(e) {
e.preventDefault();
var data = new FormData($('#form_submit').get(0));
$.ajax({
url: $(this).attr('action'),
type: $(this).attr('method'),
data: data,
cache: false,
processData: false,
contentType: false,
success: function(data) {
alert("okay");
}
});
return false; // A little hack for old browsers if you are using jQuery 2
});
});