2016-01-13 75 views
0

我试过使用有关yii和ajax的答案,但没有找到工作检查。 我在yii2 bacis的意见/网站/ about.php脚本:Yii2 + ajax不工作

<script> 
    function myFunction() 
    { 
     $.ajax({ 
      url: '<?php echo Yii::$app->request->baseUrl . '/controllers/SiteController/sample' ?>', 
      type: 'post', 
      data: { 
       searchname: 10, 
       searchby: 25, 
       _csrf: '<?= Yii::$app->request->getCsrfToken() ?>' 
      }, 
      success: function (data) { 
       console.log(data.search); 
       console.log(data.code); 
      } 
     }); 

    } 
</script> 

我在SiteController功能:

public function actionSample() { 

     if (Yii::$app->request->isAjax) { 

      $search = "some-string"; 
      $code = 20; 
      \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; 
      return [ 
       'search' => $search, 
       'code' => $code, 
      ]; 
     } 
    } 

我看到浏览器确定从阿贾克斯后。

POST http://localhost/web/controllers/SiteController/sample  
    200 OK 

但是conroller没有回答。我得到:“未定义”。 可能是URL的问题?但我试过其他的: Yii::$app->request->baseUrl . '/controllers/sample。它没有工作过(

+0

请不要使用冒犯性的语言,即使在俄罗斯。 – arogachev

回答

1

如果视图属于SiteController行动您应该使用/site/sample代替或只是sample

$.ajax({ 
    url: '/site/sample', 
    ... 
}); 

而且放置的JavaScript鉴于script标签内不Yii中欢迎您应该使用至少registerJsregisterJsFile或资产(推荐)。大约有assets和官方指南client scripts专门章节。

另外,还要确保你的服务器配置为一正确的工作使用web/index.php

更新:我们更深入地调查了问题,原因是漂亮的网址未启用。添加到应用程序配置解决了这个问题:

'urlManager' => [ 
    'showScriptName' => false, 
    'enablePrettyUrl' => true, 
], 
+0

用这个URL发表 - 200 OK,但是“data.code”是“undefined” – user3205692

+0

服务器从本手册配置:https://github.com/ilopX/yii2-basic-htaccess – user3205692

+0

@ user3205692请检查AJAX响应,它是否会返回预期的JSON? – arogachev