Javascript无法识别由oracle rowid生成的保留字符

时间:2013-11-26 00:28:03

标签: javascript jquery ajax oracle

我使用oracle rowid作为更新所选行的参考。 它运行平稳了几个月,直到最近还有一些问题 脚本如下。

update(rowid, value){
$.ajax({
   url: action.php,
   dataType: "json",
   data: {
   value : value,
   ROWID : rowid
   },
  success: function(data){
  //update whatever
    }
   });
}
action.php中的

只是db table

的更新脚本
update table set column = '".$_get['value']."' where rowid = '".$_get['ROWID']."'

当此rowid值输入脚本AAAay1AAEAABw6jAA /时,问题开始 Javascript无法接受由oracle rowid生成的/或+字符。

Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; InfoPath.2; .NET4.0C; .NET4.0E)
Timestamp: Tue, 26 Nov 2013 00:13:48 UTC


Message: Syntax error, unrecognized expression: #AAAay1AAEAABw6jAA/
Line: 4680
Char: 2
Code: 0
URI: http://192.168.2.2/project/include/js/jquery-1.8.3.js

由于无法控制rowid值,因此无法更改oracle rowid。 我不可能做替换字符串的值,以便javascript读取字符即。从\到\如果我替换它,rowid值将变为AAAay1AAEAABw6jAA //也不起作用。

如何从javascript保留字符中逃脱?

2 个答案:

答案 0 :(得分:0)

如何使用encodeURIComponent和decodeURIComponent

var x = "#AAAay1AAEAABw6jAA/";            
var txt=encodeURIComponent(x)

答案 1 :(得分:0)

   data: {
   value : value, // replace "value :" with "value:"
   ROWID : rowid  // replace "ROWID :" with "ROWID:"
   },

由于冒号之前的空格,它将冒号左侧的“value”和“ROWID”解释为变量而不是符号。只需删除冒号前面的空格即可。