2017-11-03 9 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 비 돌연변이이다.

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

그것은 replace 대신 당신이 기대하는 것입니다 "barbar"를 포함하는 조작 된 문자열을 반환하는 돌연변이되지 않는다는 것을 쉽게 볼 수 있던 대체 함수가 돌연변이 :

다음 코드를 고려 . A와 변이 값을 할당 할

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

:

대신, 당신은 뭔가를 할 수 있습니다. 귀하의 경우에는

:

response[0].TReports[0].url = response[0].TReports[0].url.replace('server/views','server/trusted/ticket/views');