Dictionary VBScript参数未从字典中获取匹配值

Dictionary VBScript参数未从字典中获取匹配值,dictionary,vbscript,asp-classic,Dictionary,Vbscript,Asp Classic,字典并没有返回我从JavaScript函数传递的VB脚本函数参数的匹配值 Javascript正在成功地将prodid值传递给Vb脚本函数,我也在VBscript函数中读取它,但当我尝试从字典中获取值时,它不会返回任何值 例如,如果我传递prodid=1,那么它将被分配给ProdcutId,但它不会从字典中获得ProductId=1的匹配值。 但我硬编码了ProductId=“1”,然后它将返回字典中的匹配值apple。 当我在GetProdcutName中打印ProductId值时,它会显示正

字典并没有返回我从JavaScript函数传递的VB脚本函数参数的匹配值

Javascript正在成功地将prodid值传递给Vb脚本函数,我也在VBscript函数中读取它,但当我尝试从字典中获取值时,它不会返回任何值

例如,如果我传递prodid=1,那么它将被分配给ProdcutId,但它不会从字典中获得ProductId=1的匹配值。 但我硬编码了ProductId=“1”,然后它将返回字典中的匹配值apple。 当我在GetProdcutName中打印ProductId值时,它会显示正确的值“1”

经典ASP:

Public Function GetProductName(prodid)
  Dim ProductId 
  Dim ProductName 
  ProductId = prodid
  Dim dictproduct
  Set dictproduct=Server.CreateObject("Scripting.Dictionary")

  dictproduct.add "1","apple"
  dictproduct.add "2","Samsung"
  dictproduct.add "3","Blackberry"

  ProductName =dictproduct.Item(ProductId)
  GetProdcutName =ProductName 
End function
JavaScript:

function ProductName()
{
var prodcutid=document.getElementById('prodcutList').value;
var productname='';
}

在修复您发布的代码中的拼写错误(产品拼写)后,强制
prodid
到字符串应该可以解决您的问题:
prodid=CStr(prodid)
。这应该与您将1硬编码为“1”时尝试的相同


看起来您在分配返回值时拼错了函数名(“c”和“u”颠倒了)。应该是:

GetProductName = ProductName 

当您尝试返回
ProductName
(即
GetProdcutName
GetProductName
)时,函数名中存在键入错误。加上函数调用GetYodleProviderCode()不是
GetProductName()
。javascript部分的另一个输入错误:getElementById('prodcutList'),它仍然给出相同的结果。如果我传递p_iProdId=1,函数将不返回任何内容,但当我硬编码p_iProdId=“1”或任何其他值时,它将返回匹配的值。虽然不太可能,但您的参数中可能有空格。我在
CStr
周围添加了一个
Trim()
。到那时,你的价值观应该是干净的。还为您的产品代码添加了
P
前缀。这应该可以消除字典查找关键字时的任何混乱。谢谢。我修剪了参数,一件奇怪的事情注意到,即使在修剪参数之后,参数也有固定长度的18个字符。我在调用函数时检查了参数值,它似乎传递了正确的值。我会尝试
CStr(CInt(prodid))
尝试将其精简到刚好的数字
GetProductName = ProductName