【问题标题】:Defining the url in yii ajax get在 yii ajax get 中定义 url
【发布时间】:2017-02-22 04:44:49
【问题描述】:

我正在尝试对 yii2 控制器执行 ajax 获取,但链接无法正确传递

这是我尝试过的:

$.ajax({
   url: '<?php echo Yii::$app->request->baseUrl. "/checks/items" ?>',  //this fails
   type: 'get',
   data: {
             category:category,
             _csrf : '<?=Yii::$app->request->getCsrfToken()?>'
         },
   success: function (data) {
                var parsedResult = $.parseJSON(data);
      .....
   $("#labels_trackcenter").html(html);
   }
  });

我如何传递那个网址

这些是配置 url 规则:

'urlManager' => [
        'class' => 'yii\web\UrlManager',
        'enablePrettyUrl' => true,
        'showScriptName' => false,
    ],

【问题讨论】:

  • 这段代码是在哪里添加的?查看*.php 文件或*.js?
  • 在脚本中的.php文件中
  • 试过Url::to(['checks/items'])Example
  • #insane 头骨它返回 Unexpected token 的错误:当我像 {{{{ url:Url::to(['checks/items']), }}}}跨度>
  • 解决语法错误:url: '".Url::to(['/checks/items'])."',

标签: php jquery ajax yii yii2


【解决方案1】:

你可以试试这个,注意串联。

       $this->registerJs("
        $.ajax({
        url: '" . yii\helpers\Url::to(["/checks/items"]) . "',
        //OR
        url: '" . Yii::$app->urlManager->baseUrl."/checks/items',

        type: get,
        data: {
                  category:category,
                  _csrf : '" . Yii::$app->request->getCsrfToken() . "'
              },
        success: function (data) {
                     var parsedResult = $.parseJSON(data);
                      .....
                     $("#labels_trackcenter").html(html);
        }
      });
   ");

【讨论】:

  • 现在收到 MLHttpRequest cannot load yiihelpersurl::to(["checks/items"]) 的错误。跨源请求仅支持协议方案:http、data、chrome、chrome-extension、https、chrome-extension-resource。
【解决方案2】:

你可以使用

Url::toRoute

$.ajax({
   url: '<?php echo Url::toRoute('checks/items'); ?>',  
   type: 'get',
   data: {
             category:category,
             _csrf : '<?=Yii::$app->request->getCsrfToken()?>'
         },
   success: function (data) {
                var parsedResult = $.parseJSON(data);
      .....
   $("#labels_trackcenter").html(html);
   }
  });

【讨论】:

  • url: '',失败我也试过 url: '',这也无法正常工作。 Ajax 将
  • 当您在 php 文件中添加代码并使用 yii2 高级模板时,您不需要添加 php 标签。参考我的回答。您只需要使用 yii2 语法注册您的 js 代码,即在 $this->registerJs() 方法中
【解决方案3】:

你可以使用Url帮助类吗,它会根据web.php文件中配置的url规则改变你的url。

$.ajax({ 
   //use Url helper class for ajax url 
   url: "<?= yii\helpers\Url::to(['@web/checks/items'],true) ?>", 
   type: 'get', 
   data: { 
     category:category, 
     _csrf : "<?=Yii::$app->request->getCsrfToken()?>" 
   }, 
   success: function (data) { 
     var parsedResult = $.parseJSON(data); 
     ..... 
     $("#labels_trackcenter").html(html); 
   } 
});

【讨论】:

  • 失败返回​​ n 错误:{{127.0.0.1/admin/fiona/checks/……20true)%20?%3E&category=2&_csrf=%3C%3F%3DYii%3A%3A-%3EgetCsrfToken()%3F%3E 404(未找到)}}
  • @GEOFFREYMWANGI 你用的是哪个,yii2 basic 还是 yii2 advance?
  • 我正在使用 yii2 高级
  • @GEOFFREYMWANGI 感谢您提供信息。你可以在你的问题中添加你的配置文件 url 规则吗?这将有助于找到问题。
  • 我已经添加了配置url规则
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-09
相关资源
最近更新 更多