2012-05-25 3 views
1

사용자가 장바구니에 제품을 추가 할 때 jQuery 경고를 표시하는 PHP 페이지가 있습니다. 경고에 표시된 메시지는 모든 언어 요소가 저장된 PHP 페이지의 변수입니다.jQuery 경고 및 이스케이프 인용 부호

$cartaddeditem='The product was added to your cart.\r\n You can view your <a href=\'cart.php?action=show\'>shopping cart</a> or click OK to continue shopping'; 

그런 다음 페이지 :

<body onload="jAlert('success', '<?=$cartaddeditem?>', '<?=$minicart?>');" <? } > 

문제는 경고 때문에 $의 cartaddeditem var에있는 따옴표의 발사 실패하고 나는 말한다 불을 지르고에서 오류가납니다 있다는 것입니다 :

Error: missing) after argument list 
Line: 1, Column: 22 
Source Code: 
jAlert('success', The product was added to your cart.\r\n You can view your <a href=\ 

어떻게하면 jQuery의 메시지 문자열에서 따옴표를 이스케이프 처리합니까? 이중 따옴표와 작은 따옴표로 여러 이스케이프 유형을 시도했지만 하나 또는 두 개의 백 슬래시를 사용했지만 아무 것도 작동하지 않았습니다.

답변

3

큰 따옴표를 사용하여 HTML 속성을 인용 해보십시오.

$cartaddeditem = 'The product was added to your cart.\r\n You can view your <a href="cart.php?action=show">shopping cart</a> or click OK to continue shopping'; 

는 또한 onload 속성을 추가하는 대신 $(document).ready(를 사용하지 않는 것이 좋습니다 될까요?

$(function(){ 
    jAlert('success', '<?=$cartaddeditem?>', '<?=$minicart?>'); 
}); 

UPDATE : 또한 따옴표가 충돌하지 않도록하기 위해 json_encode를 사용할 수 있습니다. json_encode도 문자열에서 작동하므로 큰 따옴표로 묶인 문자열을 출력합니다. 따라서 매개 변수를 따옴표로 묶지 마십시오.

$(function(){ 
    jAlert('success', <?=json_encode($cartaddeditem)?>, <?=json_encode($minicart)?>); 
}); 
+0

1 : \r\n은 줄 바꿈으로 평가됩니다 있도록 따옴표를 두 배로 당신의 PHP 문자열을 변경해야합니다 Btw는 업데이트 2

, 끈. – Curt

+0

지금까지 가장 정확한 대답 +1 –

+0

@NiftyDude 어떻게 정확합니까? 'json_encode'를 사용해야합니다. 문자열에'don't' 또는'NiftyDude's'가 포함되어 있다면 어떨까요? 항상 작은 따옴표를 피할 수는 없습니다. – meze

2

제대로 당신의 PHP 출력을 탈출 :

<body onload="jAlert('success', 
    <?php echo json_encode($cartaddeditem); ?>, 
    <?php echo json_encode($minicart); ?>);" <? } > 

업데이트

를이 태그 속성 안에 쓰여 있기 때문에, 큰 따옴표 (감사 로켓)를 작동하지 않을 것입니다!

<body onload="jAlert('success', 
    '<?php echo addslashes($cartaddeditem); ?>', 
    '<?php echo addslashes($minicart); ?>');" <? } > 

을 또는 당신은 그의 대답에 어떤 로켓을 설명 할 :

그래서 당신은 addslashes 충분히 희망을해야 할 것 중 하나. 나는에 이러한 추가 발견하지 않았다

$cartaddeditem = "The product was added to your cart.\r\n You can view your <a href='cart.php?action=show'>shopping cart</a> or click OK to continue shopping"; 
+1

이것은 작성된대로 작동하지 않습니다. 'json_encode'는 큰 따옴표로 묶인 문자열을 출력하므로 큰 따옴표로 묶은 큰 따옴표는 작동하지 않습니다. –

+0

@Rocket 다시 내 대답을 읽은 후 HTML 모드임을 알았습니다 ... doh! ... 포인터 주셔서 감사합니다! –

+0

OP가 내 대답에 댓글을 달았으며'json_encode'가 '\ r \ n'에 슬래시를 추가하여 '\\ r \\ n'이라고 지적했습니다. 'addslashes' 역시 이것을 수행합니다./ –

관련 문제