【问题标题】:Ajax Post data and then return the resultAjax Post 数据然后返回结果
【发布时间】:2021-05-15 04:05:42
【问题描述】:

嘿,我想获取 Mailchimp 列表的 ID 并将其发送到控制器。因此控制器获取 ID 并返回有关正确 Mailchimlist 的所有信息

但是我得到了所有列表,所以当列表 id 被发布时,GET 函数没有获取数据

刀片中的 Ajax 代码

 $(document).ready(function(){
               $('select').on('change',function () {
                   var mailchimplist = $(this).val();
                   alert(mailchimplist);
                   $.ajax({
                       type: "POST",
                       url: "/fetch/mailchimp/pos",
                       data: {mailchimplist : mailchimplist },
                       success: function(msg) {
                           console.log(mailchimplist);
                           $('#autosavenotify').text(msg);
                       }
                   })
               });
           });
           $(document).ready(function() {
               $('select').on('change',function () {
                   $.ajax({
                       url: "/fetch/mailchimp/pos",
                       type: 'GET',
                   })
                       .done(function (data) {
                           console.log(data);
                       })
                       .fail(function () {
                           console.log('Failed');
                       });
               })
           });

我的控制器,所以我想在这里发布 mailchimlist id,然后将结果返回给我的刀片


    public function mailchimp(Request $request){

        $mailchimp = new Mailchimp("MyAPI");

        $client = new \MailchimpMarketing\ApiClient();
        $client->setConfig([
            'apiKey' => $mailchimp->apikey,
            'server' => $mailchimp->request->getExpApikey()['1'],
        ]);

        $response = $client->campaigns->get("$request->mailchimplist");

        return response()->json($response, 200);
    }

Web.php

    Route::any('/fetch/mailchimp/pos', 'IndexController@mailchimp');

【问题讨论】:

    标签: php ajax laravel mailchimp


    【解决方案1】:

    查看您的代码,第一个故障是 csrf 令牌。

    将此行放在刀片文件的头部。

    <meta name="csrf-token" content="{{ csrf_token() }}" />
    

    编辑您的 ajax 代码如下:

    $(document).ready(function(){
                   $('select').on('change',function () {
                       var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content'); //add this line of code
                       var mailchimplist = $(this).val();
                       alert(mailchimplist);
                       $.ajax({
                           type: "POST",
                           url: "/fetch/mailchimp/pos",
                           data: {_token: CSRF_TOKEN, mailchimplist : mailchimplist }, //add _token field also
                           success: function(msg) {
                               console.log(mailchimplist);
                               $('#autosavenotify').text(msg);
                           }
                       })
                   });
               });
               $(document).ready(function() {
                   $('select').on('change',function () {
                       $.ajax({
                           url: "/fetch/mailchimp/pos",
                           type: 'GET',
                       })
                           .done(function (data) {
                               console.log(data);
                           })
                           .fail(function () {
                               console.log('Failed');
                           });
                   })
               });
    

    Read More about csrf protection in Laravel

    【讨论】:

    • 如果我查看 concole 日志,我仍然会从 mailchimp 获得所有的campaings,我只想要我们用 Ajax 发送的那个
    【解决方案2】:

    删除这个你不需要的

     $(document).ready(function() {
                   $('select').on('change',function () {
                       $.ajax({
                           url: "/fetch/mailchimp/pos",
                           type: 'GET',
                       })
                           .done(function (data) {
                               console.log(data);
                           })
                           .fail(function () {
                               console.log('Failed');
                           });
                   })
               });
    

    将 mailchimlist 更改为 msg,因为它在 "Function('msg')" 中

    
    $(document).ready(function(){
                   $('select').on('change',function () {
                       var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content'); //add this line of code
                       var mailchimplist = $(this).val();
                       alert(mailchimplist);
                       $.ajax({
                           type: "POST",
                           url: "/fetch/mailchimp/pos",
                           data: {_token: CSRF_TOKEN, mailchimplist : mailchimplist }, //add _token field also
                           success: function(msg) {
                               console.log(mailchimplist);
                               $('#autosavenotify').text(msg);
                           }
                       })
                   });
               });
              
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-09
      • 1970-01-01
      • 2020-10-28
      • 2013-12-04
      • 1970-01-01
      • 2018-03-19
      • 1970-01-01
      相关资源
      最近更新 更多