2017-04-25 42 views
0

我的AJAX如下:Django的AJAX崗位unexpect網址

<script> 
    $(document).ready(function() { 
     $.ajaxSetup({ 
      data: {csrfmiddlewaretoken: '{{ csrf_token }}'} 
     }); 
     $("#submit").submit(function() { 
      var title = $("#title").val(); 
      var body = $("#body").val(); 
      var images = $("#browsefile")[0].files[0]; 

      $.ajax({ 
       type: "POST", 
       data: {title: title, body: body, images: images}, 
       url: "{% url 'xxxxx' %}", 
       success: function (result, statues, xml) { 
        alert(result); 
       }, 
       error: function() { 
        alert("false"); 
       } 
      }) 
     }) 
    }) 
</script> 

和我的網址模式如下:

from django.conf.urls import url 
from django.contrib import admin 
from django.conf import settings 
from django.conf.urls.static import static 

from blog import views 

urlpatterns = [ 
    url(regex=r'^add/$', view=views.add, name='bbb'), 
    url(regex=r'^newBlog/$', view=views.addblog, name='xxxxx'), 
] 

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

我除了阿賈克斯後數據的方法addblog,但我得到POST /add/ HTTP/1.1代替。任何人都可以告訴我我犯了什麼錯誤,謝謝!

+0

你能告訴我們你的整個'url.py'文件? – Algorithmatic

+0

@Algorithmatic OK,我重新修改我的urls.py文件 –

+0

我在視圖中設置一個斷點。當ajax發佈數據時,它總是輸入方法add,但不是addblog –

回答

0

嘗試在提交功能附加event.preventDefault();禁用的形式,這是遵循action屬性的默認行爲。

$("#submit").submit(function (event) { 
     event.preventDefault(); 
     var title = $("#title").val(); 
     var body = $("#body").val(); 
     var images = $("#browsefile")[0].files[0]; 
     formdata = new FormData(); 
     formdata.append("images", images); 
     formdata.append("body", body); 
     formdata.append("title", title); 

     $.ajax({ 
      type: "POST", 
      data: formdata, 
      url: "{% url 'xxxxx' %}", 
      success: function (result, statues, xml) { 
       alert(result); 
      }, 
      error: function() { 
       alert("false"); 
      } 
     }) 
     return false; 
    }) 

編輯: 根據註釋。

+0

OK,我會稍後再試一個靜態的HTML,感謝 –

+0

我解決了這個疑難問題設置後的數據FileObj文件,這是被禁止的。而我從http://stackoverflow.com/questions/31866920/django-ajax-upload-image解決它告訴我,我需要創建一個FORMDATA把FileObj文件中,並張榜公佈FORMDATA作爲數據。 –