Javascript window.open模板在django中,使用chrome

Javascript window.open模板在django中,使用chrome,javascript,jquery,python,django,django-templates,Javascript,Jquery,Python,Django,Django Templates,在阅读了互联网上的所有内容后,我不再确定问题出在哪里,我希望能得到一些帮助。谢谢 我有一个用户正在填写的三种不同的表单,我在其中放置了一个jQueryUI对话框,当表单提交时会出现这个对话框。我正试图让“下一步”按钮将用户从当前页面导航到下一个模板,但无法实现这一点。我在Chrome中也遇到了错误,在我的window.open行上显示“unexpected token.”,我尝试使用变量来设置它,并尝试了各种ajax调用,但似乎没有任何效果 这是我的网址: url(r'^campers/',ca

在阅读了互联网上的所有内容后,我不再确定问题出在哪里,我希望能得到一些帮助。谢谢

我有一个用户正在填写的三种不同的表单,我在其中放置了一个jQueryUI对话框,当表单提交时会出现这个对话框。我正试图让“下一步”按钮将用户从当前页面导航到下一个模板,但无法实现这一点。我在Chrome中也遇到了错误,在我的window.open行上显示“unexpected token.”,我尝试使用变量来设置它,并尝试了各种ajax调用,但似乎没有任何效果

这是我的网址:

url(r'^campers/',campers, name="campers"),
下面是我的javascript:

    $("#vehiclebutton").click(function(e){
        e.preventDefault();
        $('<div></div>').appendTo('#vehicle_message')
            .html('<div><h3> Next, tell us about your sleeping arrangements. </h3></div>')
            .dialog({
                title: "Confirm",
                width: 500, 
                height: 300,
                modal: true,
                resizable: false,
                show: { effect: 'drop', direction: "left" }, 
                hide: {effect:'drop', direction:'left'},
                buttons: {
                    Next: function() {
                        $.ajax({ 
                            window.location.href('http://127.0.0.1:8000/campers')
                            $(this).dialog("close");
                        }) 
                }

            }
        })
    })
});
$(“#车辆按钮”)。单击(功能(e){
e、 预防默认值();
$(“”).appendTo(“#车辆信息”)
.html(‘接下来,告诉我们您的睡眠安排’)
.对话({
标题:“确认”,
宽度:500,
身高:300,
莫代尔:是的,
可调整大小:false,
显示:{效果:“下降”,方向:“左”},
隐藏:{效果:'drop',方向:'left'},
按钮:{
下一步:函数(){
$.ajax({
window.location.href('http://127.0.0.1:8000/campers')
$(此).dialog(“关闭”);
}) 
}
}
})
})
});

我建议更正您的车辆按钮点击处理程序:

$(函数(){
$(“#车辆按钮”)。单击(功能(e){
e、 预防默认值();
var obj=null;
$(“”).appendTo(“#车辆信息”)
.html(‘接下来,告诉我们您的睡眠安排’)
.对话({
标题:“确认”,
宽度:500,
身高:300,
莫代尔:是的,
可调整大小:false,
显示:{效果:“下降”,方向:“左”},
隐藏:{effect:'drop',direction:'left'},
按钮:[{
文本:“下一个”,
单击:函数(){
var数据=”;
obj=$(本);
$.ajax({
网址:'http://127.0.0.1:63342/campers',
数据:数据,
方法:“张贴”,
数据类型:“html”,
}).done(函数(数据、文本状态、jqXHR){
对象对话框(“关闭”);
}).fail(函数(jqXHR,textStatus){
对象对话框(“关闭”);
})
}
}]
});
});
});

点击我

好的,以下是最终有效的方法。我不确定这段代码中是否有一些不必要的部分,但根据上面的答案和互联网上的其他部分,以及Django文档,我将其拼凑起来:

  • 我得到了允许跨来源站点资源共享的Chrome扩展

  • 我把csrf曲奇饼按顺序放进去

  • 我将ajax头添加到ajax调用本身

  • 所有这些都是非常基本的,但我很少使用ajax,也没有与Django结合使用,下面是我的工作代码。如果可以通过编辑来改进,我很想知道

    $(function () {
          $("#profilebutton").click(function(e){
            e.preventDefault();
            var obj = null;
            $('<div></div>').appendTo('#profile_message')
            .html('<div><h3> Next, tell us about how you\'re getting here. </h3></div>')
            .dialog({
              title: "Confirm",
              width: 500,
              height: 300,
              modal: true,
              resizable: false,
              show: {effect: 'drop', direction: "left"},
              hide: {effect: 'drop', direction: 'left'},
              buttons: [{
                text: 'Next',
                click: function () {
                  var data = "";
                  obj = $(this);
                  $.ajax({
                    method: "POST", 
                    beforeSend: function(xhr, settings) {
                        if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
                            xhr.setRequestHeader("X-CSRFToken", csrftoken);
                        }
                    },
                    data: data,
                    dataType: 'html',
                  }).done(function(data, textStatus, jqXHR) {
                    window.location.href = '/vehicle/'; 
                    obj.dialog("close");
                  }).fail(function(jqXHR, textStatus) {
                    obj.dialog("close");
                  })
                }
              }]
            });
          });
        });
    
    $(函数(){
    $(“#profilebutton”)。单击(函数(e){
    e、 预防默认值();
    var obj=null;
    $(“”).appendTo(“#配置文件_消息”)
    .html('接下来,告诉我们您是如何来到这里的。'))
    .对话({
    标题:“确认”,
    宽度:500,
    身高:300,
    莫代尔:是的,
    可调整大小:false,
    显示:{效果:“下降”,方向:“左”},
    隐藏:{effect:'drop',direction:'left'},
    按钮:[{
    文本:“下一个”,
    单击:函数(){
    var数据=”;
    obj=$(本);
    $.ajax({
    方法:“张贴”,
    发送前:功能(xhr、设置){
    如果(!csrfSafeMethod(settings.type)&&!this.crossDomain){
    setRequestHeader(“X-CSRFToken”,CSRFToken);
    }
    },
    数据:数据,
    数据类型:“html”,
    }).done(函数(数据、文本状态、jqXHR){
    window.location.href='/vehicle/';
    对象对话框(“关闭”);
    }).fail(函数(jqXHR,textStatus){
    对象对话框(“关闭”);
    })
    }
    }]
    });
    });
    });
    
    $.ajax({window.location.href(')$(this.dialog(“close”);})??是的,正如vadimchin所暗示的,在jQuery ajax调用中根本不需要这样做。你想在那里做什么?首先,
    {}
    使其成为一个对象,需要键和值;您至少需要一个用于加载Ajax的URL,以及一个用于调用成功函数的URL。