【发布时间】:2020-04-03 15:45:50
【问题描述】:
我正在将程序 PHP 应用程序转换为 RESTful Laravel/jQuery 应用程序。我做了一些广泛的研究,但所有的建议都失败了,并包含在下面。
在旧版本中,新记录的创建是通过使用 ?Add 作为 GET 变量获取页面 URL 来完成的:
<div class="dropdown">
<button id="BtnID">File</button>
<div class="dropdown-content">
<a href="./?Add">Add New</a>
<a href="...">More menu items</a>
</div>
</div>
根据 Laravel 标准,我正在尝试向页面发布请求,因此我将菜单更改为:
<div class="dropdown">
<button id="BtnID">File</button>
<div class="dropdown-content">
<form id="AddNew">
<!--<a id="Add" href="#">Add New</a>-->
<!--input type='button' id='Add' value='Add New' /><!--Suggested change - also not working-->
<input type='submit' id='Add' value='Add New' /><!--Another suggested change - also not working-->
</form>
<a href="...">More menu items</a>
</div>
</div>
jQuery:
$('#Add').on('click',function(e) {
e.preventDefault;
if(confirm('some text'))
$('#AddNew').submit();
return false;
});
$('#AddNew').append(CSRF);
$('#AddNew').attr('action','./');
$('#AddNew').attr('method','post');
谁能帮我弄清楚为什么这个表单拒绝发布请求?确认消息出现,然后导航到正确的页面,但应用程序向它发出 GET 请求? 我注意到 CSRF 令牌输入未显示在 URL 中,正如我对 GET 请求所期望的那样。
编辑 此处要求的是与此页面关联的路线:
// Route::get('/SubDirectory/ThisPage/','ThisController@index'); Usually forwards to first page, but commented out for testing this
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');
【问题讨论】:
-
默认的HTTP方法是
GET,你必须在你的HTML中指定<form method="POST">...</form>并且应该通过POST提交 -
我已经在jQuery中指定了POST方法... $().attr('method','post')
-
嗯...如果在javascript中,我认为更简洁的方法是在
submit事件处理程序中设置方法:$('#AddNew').on('submit',function(){ $(this).attr('method','post'); }); -
您确定页面上只有一个
#AddNew表单吗?您使用它的方式表明您有多种形式。会是这个原因吗?
标签: php jquery laravel forms anchor