Jquery Django框架中的Ajax帖子?

Jquery Django框架中的Ajax帖子?,jquery,ajax,django,Jquery,Ajax,Django,我在django框架中对一篇ajax/jquery文章进行了一个简单的测试,但我真的不明白为什么输出不能成为一个模板页面。有人吗 我可以在firebug的“响应”选项卡中看到帖子的内容,但无论我尝试返回模板还是简单消息,浏览器本身都不会发生任何事情。相反,非ajax帖子按预期工作(加载新页面,发布消息) 我是ajax/jquery/django的新手,请原谅我的无知:) 最后,我希望能够通过jquery将任意的非表单变量传递给django视图。可能的谢谢:) 这是密码-- test.html:

我在django框架中对一篇ajax/jquery文章进行了一个简单的测试,但我真的不明白为什么输出不能成为一个模板页面。有人吗

我可以在firebug的“响应”选项卡中看到帖子的内容,但无论我尝试返回模板还是简单消息,浏览器本身都不会发生任何事情。相反,非ajax帖子按预期工作(加载新页面,发布消息)

我是ajax/jquery/django的新手,请原谅我的无知:)

最后,我希望能够通过jquery将任意的非表单变量传递给django视图。可能的谢谢:)

这是密码--

test.html:

<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script></javascript>
<script type="text/javascript">
   $(document).ready(function() {
       $("#testForm").submit(function(event){
           event.preventDefault();
           $.ajax({
                type:"POST",
                url:"/test_results/"
                    });
       });
       return false;
    });
</script>
</head>
<body>
        <form id="testForm" action="/test_results/" method="post">
            <input type="submit" id="go" name="go" value="Go!">
        </form>
</body>
</html>
URL.py:

(r'^test_results/$', views.test_ajax),
(r'^test/$', views.test),
以及几乎为空的test_results.html:

<html>
<head>
</head>
<body>
test results
</body>
</html>

测试结果
我可以在网上看到这篇文章的内容 firebug的“响应”选项卡,但是否 我尝试返回一个模板或一个简单的 消息中没有任何事件发生 浏览器本身。相反,非ajax 按预期进行后期工作(新加载) 页面,发布消息)

如果你得到了回应,你就得到了回应。你只是没有用它做任何事

为什么不提醒数据并将其附加到
中,例如:

$.ajax({
     type:"POST",
     url:"/test_results/",
     data: {
            'arbitrary-data': 'this is arbitrary data',
            'some-form-field': $("myform input:first").val(), // from form
            'background-color': $("body").css("background-color")
            // all of this data is submitted via POST to your view.
            // in django, request.POST['background-color'] 
     },
     success: function(data){
         alert(data);
         $("body").append(data);
     }
});

您需要为视图返回的响应添加处理程序:

$.ajax({
    type:"POST",
    url:"/test_results/",
    dataType: "json",
    success: function(json)
    {
        //specifying a dataType of json makes jQuery pre-eval the response for us
        console.log(json.message);
    }
 });
您可能还希望在视图中将响应编码为JavaScript:

try:
    import json
except ImportError:
    import simplejson

def my_view(request):
    if request.is_ajax():
        return HttpResponse(json.dumps({'message' : 'awesome'},
            ensure_ascii=False), mimetype='application/javascript')

希望这能帮到你

谢谢,Brandon——你已经回答了我的下一个问题——lol——json是如何融入其中的——但我仍然感到困惑:你代码中的“很棒”显示在控制台中,而不是浏览器中。这是你想要的吗?我试图弄清楚往返可能是什么样子的——让ajax发布到django视图,该视图显示最初由ajax发布的变量。很高兴我能提供帮助。如何处理返回的值取决于您的应用程序。例如,假设您希望将返回的值附加到DOM的末尾。在jQuery中可以执行:$('body').append(json.message);你的例子很好用。我想我只是想把结果显示在一个新的页面上。我理解这在某种程度上违背了ajax的目的,但正如我在回应Brandon的建议时提到的——我试图理解“数据”如何从ajax传输到django视图和新模板。如果你想要一个新页面,不要使用ajax。正常提交表单,生成的HTML将作为响应。如果您不想要一个新页面,请使用ajax并修改当前页面(如我的示例所示),或者根本不修改!您可以在brandons示例中看到,他记录了响应
console.log()
。你用它做什么取决于你。我明白,我只是想了解事物是如何“旅行”的;)我可以将不属于提交表单一部分的变量存储在ajax帖子中吗?比如说,我想将模板背景颜色的值发送到django视图进行处理?当然,ajax函数是纯javascript的。除了在
表单提交事件中触发HTML之外,不涉及任何HTML。例如,你可以在计时器上调用它!您发送的数据也是任意的。查看$.ajax文档:通过
data
参数发送数据。我会用一个例子更新我的帖子。太棒了!你太快了,玉姬。哈哈。我相信你是在睡觉的时候做的,但你刚刚让我开心了:)再次感谢。注意你的
返回false
的级别不对;它应该在
$(“#testForm”)内。提交
块,即再高一行,这样它就在结束
}之前用于该块。
try:
    import json
except ImportError:
    import simplejson

def my_view(request):
    if request.is_ajax():
        return HttpResponse(json.dumps({'message' : 'awesome'},
            ensure_ascii=False), mimetype='application/javascript')