ajax成功后用数据调用另一个控制器后的Laravel

Posted

技术标签:

【中文标题】ajax成功后用数据调用另一个控制器后的Laravel【英文标题】:Laravel after ajax sucesss calling another controller with data 【发布时间】:2017-11-16 08:20:58 【问题描述】:

目前我可以通过 ajax 将表单数据传递给我的控制器以插入到数据库中。这工作正常,插入后我将从控制器获取数据并仅在此 ajax 成功后传递给另一个控制器。目前卡在这里,因为我正在使用这个方法 window.location.href。

$.ajax(
method: "POST",
url: " URL::asset('paysubmit') ",
data: eID:eID,amount:amount,"_token": " csrf_token() " ,
success: function(data) 
    window.location.href = " URL::asset('/cds') ";

目前在支付提交控制器中,我正在使用此方法返回view('cds')->with($data);,但我需要在此 ajax 中执行此操作,因为此代码在 php 中?我需要即兴创作这个window.location.href = " URL::asset('/cds') ";

【问题讨论】:

URL::asset('/cds') 更改为 url('cds') 您想在 ajax 成功时将数据传递给其他控制器的其他方法。对吗? 我要传数据 view('cds')->with($data); @Rahul 是的,你是对的,我想在 ajax 成功时将数据传递给其他控制器的其他方法。 【参考方案1】:

您可以在第一个 ajax 请求的 success 回调中编写另一个调用。并在第二次 ajax 调用中使用从第一次调用中收到的 data

$.ajax(
    method: "POST",
    url: " '/home/view' ",
    data:  eID:eID,
    success: function(data)
       if (data)
           $.ajax(
               method="POST",
               //other ajax settings here.
           )
       
);

【讨论】:

我不想要另一个 ajax,因为一旦它的 ajax 就一直在后面等待?【参考方案2】:

您可以使用以下两种方法中的任何一种来解决您的问题:

在您的 ajax 成功函数中再次调用,并将第一次调用收到的数据传递给第二次调用。

在你的第一个控制器方法中,获取数据后,调用第二个控制器方法,然后返回结果。

您试图实现的目标是不合法的,因为您正在返回一个基本是 html 的 ajax 成功视图,一旦您重定向到另一个 url,您将丢失数据。

【讨论】:

您可以通过上述任何一种方式进行 我认为,第二个是更可行的解决方案。 取决于您要如何处理数据 @rahul 这是如何工作的详细信息在您的第一个控制器方法中,您获取数据后,调用第二个控制器方法,然后返回结果。?目前在我的控制器中,我有这个 return view('cds')->with($data);但它不会去控制器,也不会继续返回第一个调用 ajax 函数? 而不是返回视图调用其他控制器并在方法中传递数据

以上是关于ajax成功后用数据调用另一个控制器后的Laravel的主要内容,如果未能解决你的问题,请参考以下文章

通过 Ajax 调用将数组发送到控制器,然后控制器在 Laravel 中返​​回具有该数组的另一个视图

ajax成功内的Ajax调用不起作用

在 jquery 的 post 中传递参数

成功调用ajax后数据表不更新

从局部视图中对控制器的 AJAX 调用

在新页面上加载 ajax 成功数据