0

我把在这里找到的 ajaxSend 代码放在哪里:

https://docs.djangoproject.com/en/1.2/ref/contrib/csrf/#ajax

我的意思是,我有一个基本的 htm 文件,它有一个部分,看起来有点像这样:

<script>
    $(function() {
        $("#loginThing").click(function(){
            ... and then i define buttons to be pressed etc etc
    });
</script>

所以呢?我把代码放在 ${function(){}); 上面吗?调用(但在脚本标签中)?我把它放在函数调用中吗?我是否必须以任何方式改变它 - 它被称为的方式,也许 - 以任何方式或形式?

我将它卡在 $(function()) 调用上方(但在脚本标记中),但它不像我的 ajax 调用的行为有任何不同。事实上,我没有最模糊的概念如何测试这是否在做任何事情。我没有使用任何测试代码(我知道,很糟糕。但这是一个学习进步。而且,我不喜欢测试代码)。有什么方法可以“手动”测试吗?就像,只使用Firefox?

4

1 回答 1

1

我在哪里放 ajaxSend 代码

它只需要在您当前的函数定义之外。

<script>
    $(function() {
        $("#loginThing").click(function(){
            // ... and then i define buttons to be pressed etc etc
    });

    $(document).ajaxSend(function(event, xhr, settings) {
        // ... Rest of function goes here
    });
</script>

有什么方法可以“手动”测试吗?就像,只使用Firefox?

我不能告诉你如何在 Firefox 中测试它,因为我不使用它。但是,Chrome 有一个非常适合此功能的内置界面。

在 Chrome 中打开您的页面并点击 Command-Option-I(在 Mac 上,Windows 可能类似)。转到网络选项卡。在最左边的列中,您应该会看到 POST 请求的 url。点击它。它将为您提供您需要探索的所有详细信息、Cookie(查找csrftoken以确保页面中存在 Django 的 csrf cookie)、请求和响应标头等。

它不像我的 ajax 调用的行为有任何不同。事实上,我没有最模糊的概念如何测试这是否在做任何事情。

他们应该是,你只是不能“看到”它。使用上述 Chrome 工具查看与服务器的通信。要确认它“正在做任何事情”:

  1. 从 Django 站点中删除刚刚添加的 javascript 代码
  2. 对受 csrf 保护的表单执行 AJAX POST
  3. 请注意,POST 失败
于 2012-06-12T14:57:08.020 回答