Php Laravel-支持Ajax的页面,也有一些表单会引发问题

Php Laravel-支持Ajax的页面,也有一些表单会引发问题,php,ajax,forms,laravel,laravel-5.2,Php,Ajax,Forms,Laravel,Laravel 5.2,我正在构建一个通过ajax加载页面的网站,我有一个通过ajax发布的联系人表单,所以我认为它是由我的发布路线触发的。。我只是在寻找最好的方法来区分页面导航帖子和页面上的表单帖子,这样它们就不会冲突了。在联系人页面中,我的路线如下所示 Route::any('/contact', function(){ return view('frontend.contact'); }); Route::post('/contact', array( 'as' => 'contactform

我正在构建一个通过ajax加载页面的网站,我有一个通过ajax发布的联系人表单,所以我认为它是由我的发布路线触发的。。我只是在寻找最好的方法来区分页面导航帖子和页面上的表单帖子,这样它们就不会冲突了。在联系人页面中,我的路线如下所示

Route::any('/contact',   function(){
    return view('frontend.contact');
});

Route::post('/contact', array( 'as' => 'contactform.create',  'uses' => 'ContactFormController@validateandsave'));
表格如下所示

{!! Form::open(array('url' => '/contact',  'route' => 'contactform.create', 'files' => false,  'method' => 'post', 'id'=>'updateform' ,'role'=>"form" )) !!}   

<span class="input input--kozakura">
{!! Form::text('full_name', '', array('class' => 'full_name input__field input__field--kozakura')) !!}
</span>

<span class="input input--kozakura">
{!! Form::email('email', 'paddy@gmail.com', array('class' => 'email input__field input__field--kozakura')) !!}
</span>

<span class="input input--kozakura">
{!! Form::text('current_website', 'www.lassiemarlowe.com', array('class' => 'current_website input__field input__field--kozakura')) !!}
</span>

<div class="submit-btn-wrapper">
{!! Form::submit('submit') !!}
</div>
{!! Form::close() !!}
{!!Form::open(数组('url'=>'/contact','route'=>'contactform.create','files'=>false',method'=>'post','id'=>'updateform','role'=>“Form”)
{!!Form::text('full_name','',array('class'=>'full_name input__字段input_字段--kozakura'))
{!!形式::电子邮件('email','paddy@gmail.com,数组('class'=>'电子邮件输入\uuuu字段输入\uuu字段--kozakura'))
{!!Form::text('current_website','www.lassiemarlowe.com',array('class'=>'current_website input__字段input_字段--kozakura'))
{!!表单::提交('submit')
{!!Form::close()!!}

那么,如何区分页面ajax帖子和表单ajax帖子呢?

将帖子定义放在其他定义之前:

Route::post('/contact', array( 'as' => 'contactform.create',  'uses' => 'ContactFormController@validateandsave'));

Route::any('/contact',   function(){

                return view('frontend.contact');

            });

使用路由组是区分路由的好方法。我的解决办法是这样的

// all normal routes in website here
Route::any('contact', function(){
    return view('frontend.contact'); // this will produce example.com/contact
});

// all ajax call
Route::group(['prefix' => 'ajax'], function () {
    Route::post('contact', 'ContactFormController@validateandsave') // this will produce example.com/ajax/contact
});
还可以使用action('ControllerName@methodName“”生成表单“操作”属性的url。这将根据router.php文件动态更改

详见此处:

从您最近对@AngadDubey答案的评论来看,问题似乎不是这两个路由(post和any)冲突,而是您实际上需要两个不同的处理程序来处理AJAX XHR post,而不是普通浏览器形式的HTTP post

据猜测,这是因为,尽管表单的处理方式类似,但根据发生的情况,返回错误或成功消息的方式会有所不同

我想说的是,不要把它们分开,而是在你需要归还东西的时候,在这个动作中加入一些检测。因此,正常地处理POST输入(因为正常表单和AJAX表单应该是相同的,对吗?),但在返回响应时,使用类似于
app('request')->AJAX()
的方法来确定请求是否来自XHR


或者,如果确实无法使用相同的验证和处理代码来处理,则可以使用相同的检测来分割处理。

不幸的是,仍然没有运气-支持Im没有更多关于这种类型的文档setup@HamburgersnHeroin你能再描述一下这个问题吗?基本上页面是通过ajax加载的,单击链接时,jquery使用其rel值通过post调用url,然后将页面内容拉入并插入到节中。。这一切都很好。问题是当您转到联系人页面时,因为它有一个执行自己的ajax帖子的表单requests@HamburgersnHeroin您是否可以为该表单使用不同的路径?例如:
Route::post('/contact/update',…)我真的试过了,但没用,解释起来很难,但基本上都是由联系人页面控制的。。我读过关于拉威尔·乔布斯的文章,但肯定有一个简单的方法。。是否可以将某个路由与特定的html链接相关联,以便在单击“联系人”链接时触发一个路由