i had develop magento 2 extension and i have use ajax call to my controller for getting some data. but coding standard provide me some error

Use of echo language construct is discouraged.

my controller code is ......

public function execute()
    echo $mediaUrl.'cs/test/'.$file.$extension;   

i had use this code for js

function getFileUrl() {
        method: "POST",
        url: "<?php  echo $block->getUrl('modulename/index/index'); ?>",
        data:{itemId:jQuery('input[name=item]').val(),data:jQuery('#file').html() }
    }).done(function(data) {

if have any solution pleas provide it.


you can try this:

    /** @var \Magento\Framework\Controller\Result\Raw $response */
    $response = $this->resultFactory->create(\Magento\Framework\Controller\ResultFactory::TYPE_RAW);
    $response->setContents('your string here');
    return $response;

or you can try with json

    /** @var \Magento\Framework\Controller\Result\Json $response */
    $response = $this->resultFactory->create(\Magento\Framework\Controller\ResultFactory::TYPE_JSON);
    $response->setData(['success' => true, 'url' => 'your url here']);
    return $response;

But then you have to change your js that handles the ajax response and get the url from response.url.

  • how to use response.url in js – Bhavesh Prajapati May 2 at 6:18
  • in your case data.url – Marius May 2 at 6:25
  • ohh i mean that i need to define some thing in require(['jquery', 'jquery/ui','response'] ! 😅😅 – Bhavesh Prajapati May 2 at 6:28

Your execute function expects a return, so you just need to change the echo to return

public function execute()
    $url = $mediaUrl.'cs/test/'.$file.$extension;
    return $url;
  • return is not working i had try id also but out response is null – Bhavesh Prajapati May 2 at 6:10
  • try to store in a variable first before passing to return – fmsthird May 2 at 6:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.