我使用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保留字符中逃脱?
答案 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”解释为变量而不是符号。只需删除冒号前面的空格即可。