首頁  >  文章  >  web前端  >  基於javascript如何傳遞特殊字元_javascript技巧

基於javascript如何傳遞特殊字元_javascript技巧

WBOY
WBOY原創
2016-05-16 15:28:431220瀏覽

在沒步入正軌之前,先跟大家介紹JavaScript 特殊字元

你可以在 JavaScript 中使用反斜線來為文字字串添加特殊字元。

插入特殊字元

反斜線用來在文字字串中插入省略號、換行符、引號和其他特殊字元。

請看下面的 JavaScript 程式碼:

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

在 JavaScript 中,字串使用單引號或雙引號來起始或結束。這意味著上面的字串將被截為:We are the so-called。
要解決這個問題,就必須把在 "Viking" 中的引號前面加上反斜線 ()。這樣就可以把每個雙引號轉換為字面上的字串。

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

現在 JavaScript 就可以輸出正確的文字字串了:We are the so-called "Vikings" from the north。

這是另一個例子:

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

上面的範例會產生以下輸出:

You & me are singing!

下面的表格列出了其餘的特殊字符,這些特殊字符都可以使用反斜杠來添加到文本字符串中:

代碼 輸出
' 單引號
" 雙引號
& 和號
\ 反斜線
n 換行符
r 回車符
t 製表符
b 退格符
f 換頁符

背景:

今天在做一個任務時,用jquery的ajax傳遞一長串字符時,在後台地驗證一直不成功,糾結時我了(那個字符串是隨機生成地,特長).查了一上午,原來是我生成地字串中有號,而在js傳遞地時候,會理解為是連接字符用地,到了後台就將號自動變為空格了,所以後台地字符串和前台生成地已經不一樣了.

原因:

js後自動解析特殊字符,如 號為連接符,解析為空格,&為變量連接符,伺服器端接受數據時&以後地數據不顯示等等.

解決方法:

1、將字元放到form中,然後用js提交form表單到伺服器.
2.將字符中地特殊字符替換成十六進制地字符,一些特殊字符與十六進制地對應關係:

%&&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