为什么我的Dajax加载另一个页面?

0 投票
3 回答
804 浏览
提问于 2025-04-17 03:59

我正在研究这个随机机器示例,但遇到了一些问题。我按照这两个页面的说明安装了Dajax和Dajaxice:DajaxDajaxice。我的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;

撰写回答