2017-11-03 3 views
0

私は現在、Tableau Viewsを埋め込む関数を実行するこのajaxリクエストを持っています。次に、ユーザがこのサイトにいるときにTableauに再度ログインする必要なく、ユーザがTableauレポートにアクセスできるようにセキュリティトークンを挿入します。応答値の最初のインデックス[0]を別の関数に渡す前に、特にそれをどのように変更するのですか?

私のプロセスは、データベースからの応答を受け取ったときにセキュリティトークンを注入し、それにセキュリティトークンを追加するためのキーワード「チケット」を探します。 response[0]に 'ticket'というキーワードが含まれていないと、そのキーワードがresponse[0]に追加され、次の関数に渡されるまで、完全に機能します。ここで

は私の試みです:response[0].TReports[0].url.replace('server/views','server/trusted/ticket/views');

が、次の機能を実行すると、応答が修正されたものではありません。変更された '応答[0]'を受け取る方法は?

$.ajax({ 
 
     type: 'POST', 
 
      url: _config.GetHeadersByClientAPI, 
 
      dataType: 'json', 
 
     contentType: 'application/json', 
 
      data: JSON.stringify(data), 
 
      success: function (response) { 
 
      var vizArray = []; 
 
      var items = ''; 
 
response[0].TReports[0].url.replace('server/views','server/trusted/ticket/views'); //This is my attempt to edit the value, however it is modifying what it is //being passed to the next forEach. 
 
    \t \t \t \t \t 
 
         response.forEach(function (data) { 
 
          vizArray[data] = data; 
 
    \t \t \t \t \t \t var trustedticket=ticket; 
 
          var header = vizArray[data].THeaderTitle; 
 
          var header_id = vizArray[data].THeaderTitle.replace(" ", ""); 
 
          var reports = vizArray[data].TReports; 
 
    \t \t \t \t \t \t 
 
          $('#report-group-title').append("<a href='#" + header_id + "' class='list-group-item d-inline-block collapsed' data-toggle='collapse' data-parent='#sidebar' aria-expanded='false'><i id='h' class='fa fa-book'></i> <span class='d-none d-md-inline'>" + header + " </span></a> <div class='collapse' id='" + header_id + "'></div >"); 
 
          items += "<a href='#" + header_id + "' class='list-group-item d-inline-block collapsed' data-toggle='collapse' data-parent='#sidebar' aria-expanded='false'><i id='h' class='fa fa-book'></i> <span class='d-none d-md-inline'>" + header + " </span></a> <div class='collapse' id='" + header_id + "'></div >"; 
 
          var list = ''; 
 
          $.each(reports, function load(j) { 
 
           vizArray[j] = reports[j] 
 
           var name = vizArray[j].name; 
 
           var url = vizArray[j].url.replace("ticket",trustedticket); //Here I inject my security //token 
 
    \t \t \t \t \t \t \t 
 
           var hash = vizArray[j].hash; 
 
           var vizOptions = { 
 
            showTabs: true, 
 
            hideToolbar: true 
 
           }; 
 
    \t \t \t \t \t \t \t 
 
           var vizDiv = document.createElement('div'); 
 
           vizDiv.id = hash + 'Viz'; 
 
           document.getElementById('vizes').appendChild(vizDiv); 
 
           reports.viz = new tableauSoftware.Viz(
 
            document.getElementById(hash + 'Viz'), 
 
            url, 
 
            vizOptions 
 
           ) 
 
           console.log(name);

答えて

1

String.replaceは、非変異です。

次のコードを考えてみましょう:代わりにあなたが機能を交換変異していた期待するものである「BARBAR」を含む操作した文字列を返す、replaceが変異されていないことを確認することは容易である

var a = "foobar"; 
a.replace("foo", "bar"); 
console.log(a); // "foobar" 

を。に変異した値を割り当てます

a = a.replace("foo", "bar"); 

代わりに、あなたのような何かを行うことができます。あなたのケースでは

response[0].TReports[0].url = response[0].TReports[0].url.replace('server/views','server/trusted/ticket/views'); 
関連する問題