Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Django:我可以将“action=”和jQuery分配给同一个表单吗?_Javascript_Python_Jquery_Django - Fatal编程技术网

Javascript Django:我可以将“action=”和jQuery分配给同一个表单吗?

Javascript Django:我可以将“action=”和jQuery分配给同一个表单吗?,javascript,python,jquery,django,Javascript,Python,Jquery,Django,我的模板中有一个表单,它将提交的数据发送到{%url'javascript:index%}: 问题是,表单从未发布到{%url'javascript:index%},因为jQuery脚本是先执行的 是否有任何方法可以按以下顺序提交表单:首先将数据发送到{%url'javascript:index%},然后运行脚本?您应该使用AJAX来完成此操作 $('#login-form').on('submit', function(event){ event.preventDefault();

我的模板中有一个表单,它将提交的数据发送到{%url'javascript:index%}:

问题是,表单从未发布到{%url'javascript:index%},因为jQuery脚本是先执行的


是否有任何方法可以按以下顺序提交表单:首先将数据发送到{%url'javascript:index%},然后运行脚本?

您应该使用AJAX来完成此操作

$('#login-form').on('submit', function(event){

    event.preventDefault();

    var myform = document.getElementById('login-form');
    var fd = new FormData(myform );

    var post_url = $(this).find('#login-url').val();

    var csrftoken = getCookie('csrftoken');
    $.ajaxSetup({
        beforeSend: function(xhr, settings) {
            if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
                xhr.setRequestHeader("X-CSRFToken", csrftoken);
            }
        }
    });

    $.ajax({
        url : post_url,
        data : fd,
        cache: false,
        processData: false,
        contentType: false,
        type : "POST",
        success : function(data) {
            console.log("form submitted!");  // sanity check
            $('#table').load('http://127.0.0.1:8000/results',function(){
                $('#go_back').remove();
            }); // <-- Add it Here!
        },
        error : function() {
            console.log("something bad happened")
        }
    });

});
然后,您可以通过data.hello在成功呼叫中访问它,它将返回“world”

注3:目前大多数浏览器都支持FormData,但我不能完全确定某些旧版本的Internet Explorer是否支持FormData

无论哪种方式,您都可以通过标准字典发布数据。只需定义一个字典,如

fd = {variable_name: variable_value}
移除

cache: false,
processData: false,
contentType: false,
来自AJAX调用。

event.preventDefault;停止表单操作,以便在javascript中处理所有操作。为什么不通过ajax发布到javascript:index,返回数据并显示它呢?删除默认设置没有帮助。我需要将表单数据传递到函数索引,然后从索引传递到结果,因为第二个函数随后使用数据作为变量来从web上刮取数据。load仅用于显示由结果呈现的模板。
<input type="hidden" id="login-url" value="{% url 'javascript:index' %}" />
return JsonResponse({'hello': 'world'})
fd = {variable_name: variable_value}
cache: false,
processData: false,
contentType: false,