我使用Google Apps作为Web应用程序的REST API,但发现每当我尝试插入新记录时,API都不会保留加号。由于浏览器上的原始策略相同,因此必须将JSON作为URL上的参数传递给API。该过程首先将JSON格式化,然后使用JavaScript中的转义函数转义该值。
但是,一旦请求到达Google Apps,在到达doGet()之前解析请求对象的Google进程会处理未转义的" +"作为一个空间。
这是一个非常令人发狂的错误,所以如果有其他人遇到它,我希望我修复它的经验有帮助。只需使用encodeURIComponent()而不是escape(),这应该可以解决问题。
答案 0 :(得分:3)
他们都不是。
使用准备好的陈述。他们消除了对作为参数传递的内容的任何需要。这就是他们存在的原因。
答案 1 :(得分:0)
多么红的鲱鱼!
所以这就是发生的事情。我有一个URL,其中包含API的请求,以插入包含加号的记录。客户端,我使用转义函数来执行此操作,但转义函数未对加号进行编码。但是,当请求来自服务器端时,显然Google Apps后端的任何组件都会解析URL参数,然后将加号视为空格。很难识别,因为在Google Apps脚本本身中,使用unescape成功解码参数,从而使MySQL看起来成为问题。
解决方案?我转而使用encodeURIComponent而不是escape,现在它可以工作了!