Ajax调用lua脚本导致iconv不能正常运行的问题

发布于 2022-09-02 00:31:14 字数 1531 浏览 14 评论 0

html端代码如下:

<html>
<head>
<script src="web/js/CryptoJS/rollups/sha1.js" type="text/javascript"></script>
<script src="web/js/jquery-1.4.2.min.js" type="text/javascript"></script>  
</head>
<body>
<script>
var sha1=CryptoJS.SHA1("abc");
var sha1_Latin=sha1.toString(CryptoJS.enc.Latin1);
 $.ajax({
type:'get',
url:"cgi-bin/test2.lua",
data:sha1_Latin,
datatype:"text",
success:function(data){
document.write(data);采用ajax时,输出lua返回iconv.new的返回值cd到屏幕,发现为空值
document.write("<br>");
}
})
</script>
</body>
</html>

lua端代码如下

#!/usr/bin/lua
print [[
Content-Type:text/plain\n\n

]]
require"sha1"
require"iconv"
function check_one(to,from,text)
  local cd = iconv.new(to .. "//TRANSLIT", from)
  print(cd)
  local ostr,err =cd:iconv(text)

  if err == iconv.ERROR_INCOMPLETE then
   print("ERROR: Incomplete input.")
  elseif err == iconv.ERROR_INVALID then
   print("ERROR: Invalid input.")
  elseif err == iconv.ERROR_NO_MEMORY then
   print("ERROR: Failed to allocate memory.")
  elseif err == iconv.ERROR_UNKNOWN then
    print("ERROR: There was an unknown error.")
  end
  print(ostr)
  return ostr
end

ch=os.getenv("QUERY_STRING")//有无这行对代码有影响
check_one("utf-8","iso-8859-1",sha1_binary("abc"))

ch=os.getenv("QUERY_STRING")是与ajax进行交互的,接收ajax发送的数据,假如注释掉这一行的时候,单独运行lua脚本,则check_one函数可以正常运行,check_one内的cd有返回值;但是当不注释掉这行,lua脚本和ajax交互时,即使lua端不使用接收到的数据ch,check_one依然不能正常工作,输出cd为空,即iconv.new无返回值

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

红墙和绿瓦 2022-09-09 00:31:14

为啥不用openresty

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文