>  기사  >  웹 프론트엔드  >  javascript_javascript 팁을 기반으로 특수 문자를 전달하는 방법

javascript_javascript 팁을 기반으로 특수 문자를 전달하는 방법

WBOY
WBOY원래의
2016-05-16 15:28:431207검색

올바른 길을 가기 전에 먼저 JavaScript 특수 문자를 소개하겠습니다

JavaScript에서 백슬래시를 사용하여 텍스트 문자열에 특수 문자를 추가할 수 있습니다.

특수문자 삽입

백슬래시는 텍스트 문자열에 줄임표, 줄 바꿈, 따옴표 및 기타 특수 문자를 삽입하는 데 사용됩니다.

아래 JavaScript 코드를 참조하세요.

var txt="We are the so-called "Vikings" from the north."
document.write(txt)

JavaScript에서 문자열은 작은따옴표나 큰따옴표를 사용하여 시작하거나 끝납니다. 이는 위의 문자열이 We are the 소위로 잘린다는 것을 의미합니다.
이 문제를 해결하려면 "Viking"의 따옴표 앞에 백슬래시()를 붙여야 합니다. 그러면 각 큰따옴표가 리터럴 문자열로 변환됩니다.

var txt="We are the so-called \"Vikings\" from the north."
document.write(txt)

이제 JavaScript는 올바른 텍스트 문자열을 출력합니다. 우리는 소위 북쪽에서 온 "바이킹"입니다.

또 다른 예는 다음과 같습니다.

document.write ("You \& me are singing!") 

위 예에서는 다음과 같은 출력이 생성됩니다.

You & me are singing!

다음 표에는 백슬래시를 사용하여 텍스트 문자열에 추가할 수 있는 나머지 특수 문자가 나열되어 있습니다.

코드 출력
' 작은따옴표
" 큰따옴표
& 앰퍼샌드
\ 백슬래시
줄바꿈
캐리지 리턴 캐릭터
백스페이스 문자
에프 페이지 피드

배경:

오늘 작업을 할 때 jquery의 ajax를 사용하여 긴 문자열을 전달할 때 백그라운드에서 확인이 항상 실패했습니다(문자열이 무작위로 생성되는 것이 특징입니다). 오전 내내 제가 생성한 문자열에 숫자가 있는 것으로 알고 있는데, js를 통해 전달되면 연결 문자로 이해가 되고, 그 숫자가 백그라운드에서 자동으로 공백으로 변경되므로 백그라운드에서 생성된 문자열은 프런트에서 생성된 문자열과 다릅니다.

이유:

js 뒤에는 특수 문자가 자동으로 구문 분석됩니다. 예를 들어 am은 커넥터이고 공백으로 구문 분석되며 &는 변수 커넥터이며 서버가 데이터를 수락하면 & 등 뒤에 데이터가 표시되지 않습니다.

해결책:

1. 양식에 문자를 넣은 다음 js를 사용하여 양식을 서버에 제출합니다.
2. 문자의 특수 문자를 16진수 문자로 바꾸세요. 일부 특수 문자와 16진수 문자 간의 대응:

우주 / ? % & = #
+ / ? % & &3D #

str = str.replace(/\+/g,%2b); 将+号替换为十六进制

3、最简单地一种,使用encodeuricomponent()函数.  

  该方法不会对 ascii 字母和数字进行编码,也不会对这些 ascii 标点符号进行编码: - _ . ! ~ * ' ( ) .
其他字符(比如 :;/?:@&=+$,# 这些用于分隔 uri 组件地标点符号),都是由一个或多个十六进制地转义序列替换地.

jQuery ajax特殊字符参数

在做ajax登录时候遇到的一个问题,当传入参数含有特殊字符,比如:“$'#@”等。参数传递会有问题,无法正确获取。

$.ajax({
  url: '/user/login.ydd',
  type:'post',
  data:'name=abce&password=abcd&pwd',
  success: function(data){
  }
})

我要传入的是用户名为:abc,密码为abcd&pwd的用户登录。但传入后台获取参数,会被password=abcd当作一个参数传递,&这个特殊将pwd分开了作为另一个参数解析了。

解决方法,这时候就需要ajax另外一种传递参数的方式

$.ajax({
  url: '/user/login.ydd',
  type:'post',
  data:{'name':'abce','password':'abcd&pwd'},
  success: function(data){
 
  }
})
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.