为什么我的Dajax加载另一个页面?
我正在研究这个随机机器示例,但遇到了一些问题。我按照这两个页面的说明安装了Dajax和Dajaxice:Dajax和Dajaxice。我的ajax.py文件是这样的:
import random
from dajax.core import Dajax
from dajaxice.decorators import dajaxice_register
@dajaxice_register
def randomize(request):
dajax = Dajax()
dajax.assign('#result','value',random.randint(1, 10))
return dajax.json()
这是我的views.py:
from django.shortcuts import render_to_response
from django.template import RequestContext
def dajax(request):
return render_to_response( 'dajax.html', context_instance=RequestContext(request) )
这是我的urls.py:
from django.conf.urls.defaults import patterns, include, url
from dajaxice.core import dajaxice_autodiscover
from dajaxice import urls
from django.conf import settings
from Dajax.myapp.views import dajax
dajaxice_autodiscover()
urlpatterns = patterns('',
(r'^%s/' % (settings.DAJAXICE_MEDIA_PREFIX), include('dajaxice.urls')),
(r'^dajax/$', dajax),
)
我的html表单标签是这样的:
<form>
<input type="text" name="result" value="" id="result">
<input type="button" name="rand" value="Let's Rand!" id="rand" onclick="Dajaxice.myapp.randomize(Dajax.process); return false;">
</form>
这是我的head标签的样子:
<head>
<title>My base template</title>
{% dajaxice_js_import %}
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript" charset="UTF-8"></script>
<script src="{{ STATIC_URL }}js/jquery.dajax.core.js" type="text/javascript" charset="UTF-8"></script>
</head>
我在项目目录的init.py文件中添加了以下内容:
from myapp.ajax import randomize
另外值得一提的是,我的Django应用的名字是myapp。
在我的页面上,当我点击“Let's Rand!”时,页面跳转到http://localhost:8000/dajax/?result=2,但是文本输入框里没有任何值。我检查了Chromium的控制台,没有发现任何错误。
我是不是在安装Dajax或Dajaxice时出错了,还是我的代码有问题呢?
我猜可能是因为我使用的是jQuery而不是Prototype,所以需要做一些不同的设置。
谢谢你的帮助!
3 个回答
1
把这个放到你的 views.py 文件里:
from dajaxice.core import dajaxice_autodiscover
dajaxice_autodiscover()
1
你需要确保你想要导入的 ajak.py
文件所在的应用已经在你的 settings.py
文件中的 INSTALLED_APPS
列表里。
可以查看自动发现的源代码:
http://docs.dajaxproject.com/dajaxice/_modules/dajaxice/core/Dajaxice.html
2
在你的 onClick
处理函数中,调用 Dajax 之后,你需要加上 return false;
。