输入按钮/锚链接通过GET提交表单,其中指定了POST。

9 浏览
0 Comments

输入按钮/锚链接通过GET提交表单,其中指定了POST。

我正在将一个过程化的PHP应用程序转换为一个RESTful的Laravel/jQuery应用程序。我做了一些详尽的研究,但所有的建议都失败了,下面包括了所有的建议。

在旧版本中,创建一个新记录是通过在页面URL上添加?Add作为GET变量来完成的:

    
        添加新的
        更多菜单项

根据Laravel的标准,我尝试将请求POST到页面,所以我修改了菜单如下:

    
        
更多菜单项

jQuery:

$('#Add').on('click',function(e) {
    e.preventDefault;
    if(confirm('一些文本'))
        $('#AddNew').submit();
    return false;
});
$('#AddNew').append(CSRF);
$('#AddNew').attr('action','./');
$('#AddNew').attr('method','post');

有人可以帮我弄清楚为什么这个表单拒绝POST请求吗?确认消息出现后,页面导航到正确的页面,但应用程序却向其发出了GET请求?

我注意到CSRF令牌输入没有显示在URL中,正如我对GET请求所期望的那样。

编辑

根据要求,这个页面的相关路由如下:

//  Route::get('/SubDirectory/ThisPage/','ThisController@index'); 通常转发到第一个页面,但为了测试这个而注释掉了
    Route::get('/SubDirectory/ThisPage/{PageNr}', 'ThisController@edit');
    Route::post('/SubDirectory/ThisPage/', 'ThisController@add');
    Route::delete('/SubDirectory/ThisPage/{ID}', 'ThisController@destroy');
    Route::patch('/SubDirectory/ThisPage/{ID}', 'ThisController@update');

0
0 Comments

最近我发现,当使用"./"作为表单的action属性时,提交按钮或锚链接无法正确提交表单。但是,当我将action属性更改为完整的URL "/SubDirectory/ThisPage"时,问题得到了解决。

问题的原因是,使用"./"作为action属性时,浏览器会将相对路径解析为当前页面的相对路径。因此,当表单提交时,浏览器尝试将表单数据提交到当前页面的相对路径,而不是我们预期的目标页面。

解决方法是将action属性修改为完整的URL。通过使用完整的URL,我们明确指定了表单数据应该提交到的目标页面。在这种情况下,我们将action属性更改为"/SubDirectory/ThisPage",其中"/SubDirectory/ThisPage"是我们要提交到的目标页面的完整URL。

这样,当我们点击提交按钮或锚链接时,表单数据将被正确地提交到目标页面,而不会出现问题。

0
0 Comments

问题的原因是缺少CSRF令牌,解决方法是在表单中添加CSRF令牌,并将表单的方法设置为POST。

原因:

根据给出的代码,可以看出问题出现在没有添加CSRF令牌。CSRF(Cross-Site Request Forgery)令牌是一种安全机制,用于防止恶意网站利用用户的身份在其他网站上执行恶意操作。

解决方法:

要解决这个问题,需要在表单中添加CSRF令牌,并将表单的方法设置为POST。在给出的代码中,可以看到在文档加载完成后,通过jQuery将CSRF令牌添加到隐藏的input标签中,并将表单的方法设置为POST。这样就可以通过POST方法提交表单,同时带有CSRF令牌,以确保安全性。

以下是解决问题的代码:



  
    Title
    
  
  
  
  
  

以上代码将会添加CSRF令牌,并将表单的方法设置为POST,以解决提交时出现的问题。

请注意,CSRF令牌的值应该由后端生成,并在页面的meta标签中进行设置。在这个例子中,CSRF令牌的值为"73ijdnnxyis7o3jr"。在实际应用中,应该根据具体情况生成并设置CSRF令牌的值。

希望以上解决方法对您有帮助!

0
0 Comments

问题的原因是作者想要使用一个链接来提交表单,而不是使用提交按钮或输入框。作者尝试使用一个带有onclick属性的链接,并在onclick处理程序中使用了form.submit()来提交表单。然而,这种方法只适用于支持JavaScript的用户。此外,作者还提到,如果将链接转换为按钮或输入框,样式会受到影响。

解决方法是使用一个带有onclick属性的链接,并在onclick处理程序中使用form.submit()来提交表单。但是需要注意的是,这种方法只适用于支持JavaScript的用户。如果要支持不支持JavaScript的用户,可以考虑使用一个简单的来提交表单。如果将链接转换为按钮或输入框,可以使用CSS来自定义样式,以达到与链接相同的效果。

以下是完整的文章:

HTML表单通常使用提交类型的输入或按钮来提交。不应该使用链接来提交表单,但是如果你非常希望使用链接来提交表单,你可以使用一个带有onclick属性的链接,并在onclick处理程序中使用form.submit()来提交表单。需要注意的是,如果使用这种方法,它将不适用于不支持JavaScript的用户。

为什么不只是一个简单的呢?如果日后需要进行一些异步请求或其他操作,那么给输入框一个id会更方便...

因为我想要重用现有的菜单格式。如果我将锚点标签转换为按钮/输入框,样式就不会有相同的效果。

你可以按照自己的需求来自定义输入框的样式。

我刚刚将锚点转换为提交输入框,但页面仍然发送了GET请求。

0