본문 바로가기

카테고리 없음

쌍따옴표 안의 홑따옴표

ajax후에 테이블을 그려야했는데 맨 끝부분에는 관리 컬럼이있고 그래서 삭제가 가능해야했다.

1) 삭제를 누르면 a tag의 onclick function이 호출되어야한다.

2) 언어값, 명칭값, 수정하려는 지역값, 총 세개의 파라미터를 전달해야한다.

 

그런데

이렇게 문자열이 깨졌음.

 


 

해결방법은

 var valueString =   value.replace(/'/gi, "\\\'");

이렇게 하면 예컨대 St.Jone's 와 같은 문자열이 

St.Jone\'s로 바뀐다. 

그래서 

 

지역명|St.Jone\'s|코드 로 온전히 전달된다.

 

 

 

'<a href="javascript:void(0);" onclick="deleteName(\'' + keyValueRegionCode + '\');">[ 삭제 ]</a>' + '</td></tr>';

현재의 a 태그는 이렇게 생김. onclick option안에 여러 변수를 전달하려고 하다보니 너무 힘들어서 그냥 하나로 뭉쳤다 ㅜㅜ

 

 

$.ajax({
            url: "http://localhost:8080/api/v1/regions/" +  $('#regionCodeForm').text() + "/names",
            type: "GET",
            success: function(data) {
                const tableData = data.data;
                const regionCode =  $('#regionCodeForm').text();

               // const itemsArray = tableData.map((item) =>
               // const key =  Object.keys(item)[0];
               // return '<tr><td>' + Object.keys(item)[0] + '</td><td>' + Object.values(item) + '</td><td>' + `<a href="javascript:void(0);" onclick=`deleteName(\${Object.keys(item)[0]}, \${Object.values(item)})`>[ 삭제 ]</a>` + '</td></tr>');

                const itemsArray = tableData.map(function(item) {
                    var key =  Object.keys(item)[0];
                    var value = Object.values(item)[0];
                    var valueStr = JSON.stringify(value);
                    var valueString =   value.replace(/'/gi, "\\\'");

                    var keyValueRegionCode = key + "|" + valueString + "|" + regionCode;

                    return '<tr><td>' + key + '</td><td>' + value + '</td><td>' + '<a href="javascript:void(0);" onclick="deleteName(\'' + keyValueRegionCode + '\');">[ 삭제 ]</a>' + '</td></tr>';
                });


                $('#nameList > tbody').append(itemsArray);
            }
        })

 

 

전달받은 뭉태기 파라미터를 구질구질하게 쪼개는 부분.

a tag안에서 온전히 전달하기가 쉽지 않았다.

function deleteName(keyValueRegionCode) {
        var keyValue = keyValueRegionCode.split("|")[0];
        var nameValue = keyValueRegionCode.split("|")[1];
        var regionCode = keyValueRegionCode.split("|")[2];
       $.ajax({
            url: "http://localhost:8080/api/v1/regions/" + regionCode + "/names?lang=" + keyValue + "&name=" + encodeURIComponent(nameValue),
            method: "DELETE",
            success: function() {
                alert("삭제되었습니다.");
                location.reload();
            },
            error: function(err) {
                console.log(err);
            }
        });
    }