2012-01-02 23 views
1

我試圖創建一個基本的提交表單(如dajaxice的例子),但我不斷收到來自螢火控制檯404錯誤:Dajaxice網絡錯誤404:未找到方法

404 NOT FOUND 386ms 
"NetworkError: 404 NOT FOUND - http://<my_website>/dajaxice/maynard.maynard_core.subscribe/" 

我的項目文件夾結構

/maynard/maynard_core/ 

此文件夾包含項目(views.py,ajax.py等等...主要Django項目文件夾) 裏面的ajax.py文件的主文件,還有的訂閱方法:

from dajax.core import Dajax 
from dajaxice.core import dajaxice_functions 
from dajaxice.decorators import dajaxice_register 
from views import subscribe_search 
from forms import SubscriptionForm, SendMailForm 
from django.core.mail import send_mail 


def subscribe(request, form): 

    if request.POST: 
     dajax = Dajax() 

     form = SubscriptionForm(form) 

     try: 
      if form.is_valid(): 
       url = form.cleaned_data['url_sub'] 
       what = form.cleaned_data['what_sub'] 
       where = form.cleaned_data['where_sub'] 
       mail = form.cleaned_data['email'] 

       subscribe_search(url,what,where,mail) 
       dajax.assign('#sub_mess_top','innerHTML','Thank you for subscribing to the search') 

      else: 
       dajax.add_css_class('#sub_mess_top','text error-message') 
       dajax.assign('#sub_mess_top','innerHTML','Couldn\'t complete the request, try again!') 

      return dajax.json() 

     except: 
      dajax.add_css_class('#sub_mess_top','text warning-message') 
      dajax.assign('#sub_mess_top','innerHTML','You already saved this search') 
      return dajax.json() 
dajaxice_functions.register(subscribe) 

,然後將其從這個稱爲js的方法

function send_form_top(){ 
    data = $('#subscribe').serializeObject(true); 
    Dajaxice.maynard.maynard_core.subscribe(Dajax.process,{'form':data}); 
} 

形式是一種基本形式與動作 「#」 和的onclick = 「send_form_top();」

我遵循安裝和配置指南(設置配置,網址配置等等等等),這是一個非常實用的101。

在urls.py

from dajaxice.core import dajaxice_autodiscover 
dajaxice_autodiscover() 
... 
django.conf.urls.defaults.url(r'^%s/' % settings.DAJAXICE_MEDIA_PREFIX, django.conf.urls.defaults.include('dajaxice.urls')), 

我settings.py中添加 'dajaxice' 我安裝的應用程序,並DAJAXICE_MEDIA_PREFIX是 'dajaxice'(如文檔)。 模板也很好(因爲我有包含動態編譯的js的dajaxice)

但是我仍然無法使它工作。我檢查THROU響應頭,這就是我得到的dajax.js文件:

maynard_core: { 


    subscribe: function(callback_function, argv, custom_settings){ 
     Dajaxice.call('maynard.maynard_core.subscribe', callback_function, argv, custom_settings); 
    }, 
... 

這告訴我,提交方法,這是內部的梅納德文件ajax.py/maynard_core /實際上是包括在內,回調也是正確的。我真的不知道如何調試,django日誌沒有顯示任何信息。感謝所有提前,我真的在這個我的頭髮鬆動。

+1

小評論:在訂閱方法中有dajaxice裝飾器和function_register。這只是因爲我嘗試了他們兩個,使用@dajaxice_register或dajaxice_functions.register(訂閱)沒有區別。代碼不是凌亂:) – 2012-01-02 10:30:42

回答

0

如果你有一個404錯誤,絕對是你的urls.py配置的問題。 dajaxice之上有任何通配符url?嘗試把dajaxice url配置在開頭,看看會發生什麼。

無論如何...你的views.py,ajax.py,等等...在任何應用程序內?或者全部都在根項目文件夾中。這也可能是問題。

+0

views.py和ajax.py在maynard_core應用程序內,urls.py進入根文件夾。明天我會嘗試將dajaxice url配置在開頭。我們有一個nginx服務靜態,這可能是問題嗎?我必須告訴nginx/dajaxice/​​是一個有效的網址嗎?或者是什麼?謝謝 – 2012-01-03 00:12:20

+0

我照你所說的做了(http://pastie.org/3117670,同時項目也改了名字),沒有任何變化。另外,我有一個新奇怪的行爲:我將訂閱函數名稱更改爲「subscribe_test」(我關於名稱衝突或類似的,因爲「訂閱」是一個常見的名稱),顯然該方法不會註冊...我我現在很困惑 – 2012-01-03 10:59:56

+0

因爲我們的nginx proxypass配置,我不得不放棄dajaxice,這是一個真正的恥辱,因爲我喜歡它在以前的項目。無論如何,謝謝喬治 – 2012-01-04 12:38:32