タイトルのようなことをするために下記コードを作成しました。しかし、関数も発火せずエラーも出ません。どうすればbackground.jsからpopup.jsにデータを送ることができますでしょうか。

background.js

chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
  chrome.tabs.query({active: true, windowId: chrome.windows.WINDOW_ID_CURRENT}, function(result){
    chrome.tabs.sendMessage(result.shift().id, {
      command: "get_dom"
    },
    function(msg) {
      console.log("result message:", msg);
      $.ajax({
        type:"POST",
        url:"http://localhost:3000",
        data: JSON.stringify({
          text: msg
        }),
        dataType: "json",
        contentType:"application/json; charset=UTF-8",
        crossDomain: true,
        success: function(data){
          console.log(data);
          var popup = chrome.extension.getViews({type: "tab"});
          if(popup.length > 0){
            popup[0].showResult(data);
          }
        }
      })
    });
  });
});

popup.js

$(document).ready(function(){
  $('#submit').click(function(){
    console.log("cliecked");
    chrome.runtime.sendMessage({
      command: "get_text"
    });
  });

  function showResult(data){
    console.log(data);
    console.log("received message");
  }

});