在Django D上使用JQuery的Ajax

2024-10-05 11:31:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Django(1.2.5)站点上用JQuery(1.5)组合一个Ajax请求。我目前正在开发服务器上工作,因为我计划在正式产品发布之前进行演示。在

模板中的javascript代码:

function postTest()
{
        $.post("/get_elections", { csrfmiddlewaretoken: $('input[name=csrfmiddlewaretoken]').val() }, alertResult);

}

function alertResult(result)
{
    alert(result);
}

它的名称:

^{pr2}$

Ajax视图:

def get_selections(request):
if request.is_ajax():
    if request.method == 'GET':
        message = "This is an XHR GET request"
    elif request.method == 'POST':
        message = "This is an XHR POST request"
        # Here we can access the POST data
        print request.POST
else:
    message = "No XHR"
    return HttpResponse(message)

索引视图:

def index(request):
    polylist = [] 
    return render_to_response('test.html', {'polylist': polylist},context_instance=RequestContext(request))

URLConf:

(r'^gi_prototype/', 'world.views.index'),
(r'^get_selections$', 'world.views.get_selections')

相关设置:

append_SLASH = 'false'

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)

当我点击页面中的“Link”时,页面重新加载并抛出异常。 在Firebug和Firefox错误控制台中都有例外:

Error: uncaught exception: [Exception... "Component returned failure code: 0x80040111 >(NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.getAllResponseHeaders]" nsresult: "0x80040111 >(NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: http://localhost:8000/site_media/jquery-1.5.js :: anonymous :: line 7207" data: no]

Django Dev服务器提供以下输出(我用问号替换了token):

<QueryDict: {u'csrfmiddlewaretoken': [u'??????????????????????????????']}>
[22/Feb/2011 16:31:23] "POST /get_selections HTTP/1.1" 200 27
[22/Feb/2011 16:31:23] "GET /gi_prototype/ HTTP/1.1" 200 970

经过几个小时的搜索,我开始认为这只是Django Dev服务器的一个限制,但这似乎是愚蠢的。任何其他的建议都会很有帮助。提前谢谢。在


Tags: django服务器messagegetisrequestcontribpost
1条回答
网友
1楼 · 发布于 2024-10-05 11:31:20

所以我经过长时间的研究才找到了答案,很多人都会从我的痛苦中吸取教训。在

问题在于:

<a href="" onclick='postTest()'>Link</a>

无论XMLHttpRequests是什么包装器,都不能通过带有href的link标记中的onclick启动。我只是把代码改成这样:

^{pr2}$

而且效果很好。没有服务器问题。没有AJAX错误。只是使用正确的标记。在

你们要留心我所说的灾祸的话,免得你们受我同样的命运!在

相关问题 更多 >

    热门问题