Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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 js在基于laravel的引导程序上发送表单时出错_Javascript_Laravel_Bootstrap Modal_Csrf Token - Fatal编程技术网

Javascript js在基于laravel的引导程序上发送表单时出错

Javascript js在基于laravel的引导程序上发送表单时出错,javascript,laravel,bootstrap-modal,csrf-token,Javascript,Laravel,Bootstrap Modal,Csrf Token,我想完成这个简单的任务: <form id="myForm" action="foo.htm" method="post"> <ul> <li onclick="myForm.submit();">Click me</li> </ul> </form> 单击我 我的页面有点复杂,但并不难:我通过点击呈现页面上的按钮加载了一个模式,并根据一个变量的内容动态绘制,因此在我的脚本部分: $.each(

我想完成这个简单的任务:

<form id="myForm" action="foo.htm" method="post">  
  <ul>
    <li onclick="myForm.submit();">Click me</li>
  </ul>
</form>

    单击我
我的页面有点复杂,但并不难:我通过点击呈现页面上的按钮加载了一个模式,并根据一个变量的内容动态绘制,因此在我的脚本部分:

$.each(tasks, function(index, task) {
                        [...]
                        VARIABLE DECLARATION PART
                         [...]                      

                        body.append('<form class=taskForm id='+taskId+' action="'+
                            '{{URL::route('dettaglioTask')}}"' +
                            ' method="Post">' +
                            '@csrf'+
                            '<li onClick="'+taskId+'.submit()">' +
                            '<div class="block">' +
                            '<div class="tags">' +
                            '<a class="tag">' +
                            '<span>'+da+'-'+mo+'-'+ye+'</span>' +
                            '</a>' +
                            '</div>' +
                            '<div class="block_content">' +
                            '<h2 class="title">' +
                            '<a>'+divStatus+'</a>' +
                            '</h2>' +
                            '<div class="byline">' +
                            '<span>'+tipo+'</span> ' +
                            '</div>' +
                            '<p class="excerpt">'+descrizione+'' +
                            '</p>' +
                            '</div>' +
                            '</div>' +
                            '</li>'+
                            '</form>'
                        );
$。每个(任务、函数(索引、任务){
[...]
变量声明部分
[...]                      
body.append(“”)+
“@csrf”+
“
  • ”+ '' + '' + '' + “+da+”-“+mo+”-“+ye+”+ '' + '' + '' + '' + “+divStatus+”+ '' + '' + ''+tipo+''+ '' + “

    ”+描述+ “

    ”+ '' + '' + “
  • ”+ '' );
    此部分在引导模式中正确呈现给我。 有趣的是:

       <ul class="list-unstyled timeline">
                                <form class="taskForm" id="1135102" action="http://localhost:8000/dettaglioTask" method="Post">
                                 <input type="hidden" name="_token" value="VJQYeeHRWs222Rms1UBWxdvc7tPcBGer7xMy6iUC">
                                    <li onclick="1135102.submit()">
                                        [....]
                                     </li>
    
    • [....]
    甚至下一个forms/li元素对我来说都是正确的,具有唯一的id、令牌、url和变量。 所以我为什么得到这个:

    未捕获的语法错误:无效或意外标记

    当我尝试点击特定的“li”元素时

    第二个问题是,我是否需要在所描述的每种形式中嵌入“csfr”令牌? 因为我在手册上找到了这一点,但我不太清楚什么是正确的方法:

    CSRF令牌和JavaScript 在构建JavaScript驱动的应用程序时,让JavaScript HTTP库自动将CSRF令牌附加到每个传出请求是很方便的。默认情况下,resources/js/bootstrap.js文件中提供的Axios HTTP库会使用加密的XSRF-token cookie值自动发送X-XSRF-token头如果不使用此库,则需要为应用程序手动配置此行为

    我在Laravel6.2上使用bootstrap.min.js。
    谢谢!

    如果您只想通过表单名称调用
    submit
    函数,您需要为表单指定一个
    名称,而不是
    id
    属性。 因此,如果你有
    你可以做
    myForm.submit()
    ,如果你有
    你需要做
    getElementById('myForm')。submit()

    此外,是的,如果您以这种方式发送表单,则需要添加CSRF令牌。如果您使用像axios这样的HTTP客户端,则可以为每个请求自动设置CSRF令牌。但是,您必须以不同的方式发送表单,即使用axios

    编辑
    发送表单无论哪种方式都有效,因此它与您是否使用
    id
    name
    无关。我从中获得了信息,但得出了错误的结论。我假设表单没有发送,但这不是问题所在。

    经过多次测试后,我发现问题是“id”字段中出现了错误:

    -我的任务ID是数字的

    因此,表单的所有id或名称都是数字

    一个id的值“example”而不是一个数字是错误的,这个id用于发送表单! 因此,我所做的是在表单的id/name上添加一小部分,在onclick函数上添加同样的内容。 我可以确认它在id或名称上起作用

    '<form class=taskForm name=numero_'+taskId+' action="'+
                                '{{URL::route('dettaglioTask')}}"' +
                                ' method="Post">' +
                                '@csrf'+
                                '<li onClick="numero_'+taskId+'.submit()">' +
    
    “”+
    “@csrf”+
    “
  • ”+
  • 所以这个回复是错误的,即使它被标记为解决方案更改完成,但对我来说是相同的错误:“Uncaught SyntaxError:Invalid or unexpected token”看,通常你不会否决一个答案,即使它不能解决你的问题。看这里:我以为问题是表单没有发送。所以我查了一下,发现了这个问题,然后认为问题是设置ID而不是名称。现在很明显,问题不是表单没有发送,而是服务器端错误。请告诉我r否决票,但这并不是说你所说的是错的,它的工作甚至是通过id,所以对于这一点,我否决票。如果我也错了…道歉。无论如何感谢你的贡献。我只是想让你知道。否决票并不意味着在答案错误时使用。如果你这样做,你就失去了人们对你的帮助。而且,你也失去了自己的声誉关于CSRF的部分仍然是正确的,所以我认为“没有用”是有争议的。