从 url 获取参数返回“参数未定义”
Posted
技术标签:
【中文标题】从 url 获取参数返回“参数未定义”【英文标题】:getting parameters from a url returns 'parameter is undefined" 【发布时间】:2013-10-07 02:19:22 【问题描述】:这是一个简单的问题,但我似乎无法找到答案。
我正在尝试通过以下方式将参数传递给脚本: https://script.google.com/macros/s/AKfycbzygHQ2qQ.../exec?id=1234&value=Hello
脚本很简单:
function doGet(e)
Logger.log('in doGet function');
for (var i in e.parameter)
Logger.log('parameter ' + i+1 + ' is ' + e.parameter[i]);
并在执行记录中获得以下内容:
[13-10-01 10:21:20:722 ICT] Starting execution
[13-10-01 10:21:20:734 ICT] Logger.log([parameter is undefined, []]) [0 seconds]
[13-10-01 10:21:20:735 ICT] Execution succeeded [0.0 seconds total runtime]
我在这里做错了什么?
谢谢!
【问题讨论】:
我希望它是一个简单的错字,你应该迭代思考 e.parameters 我在没有任何编辑的情况下运行了相同的代码,我在 doGet 函数 [13-10-01 12:33:48: 576 IST] 参数 value1 is Hello" in logger 谢谢艾哈迈德。我猜这是脚本设置和部署的问题......仍然无法找出什么...... 【参考方案1】:只需使用 e.parameter:
function doGet(e)
var app = UiApp.createApplication();
var label = app.createLabel('Parameter value a:'+e.parameter.a+' Parameter value b:'+e.parameter.b);
app.add(label);
return app;
发布它,
获取 URL,你应该得到类似的东西:
https://script.google.com/macros/s/AKfycbzvmy136r2B1RcIYd7QUmv9-1BBqD9WIwpt3NX9b3Wc3yZJazOj/exec
将“?a=Something&b=somethingElse”添加到 URL:
https://script.google.com/macros/s/AKfycbzvmy136r2B1RcIYd7QUmv9-1BBqD9WIwpt3NX9b3Wc3yZJazOj/exec?a=Something&b=somethingElse
然后重新加载页面,你应该会看到:
Parameter value a:Something -- Parameter value b:somethingElse
在浏览器页面上。
【讨论】:
【参考方案2】:不确定发生了什么,但它会出现,但在“部署应用程序”窗口中的 URL 中提供的密钥与单击“测试最新代码的 Web 应用程序”后的密钥不同(除了 dev 与 exec )。一旦我复制了浏览器中显示的链接,而不是部署应用程序窗口中提供的链接,它就可以工作了。但是,我仍然不确定我的步骤是否有问题或谷歌是否有问题。任何人都可以对此有所了解吗?我认为它应该是相同的!
【讨论】:
【参考方案3】:Wager Ahmad 让我走上了正确的道路,我遇到了同样的问题并尝试了 2 天。我在 javascript 和 Google Apps Script 方面缺乏的一些知识汇集到了一起。
试试这个,应该可以工作,最终变得如此“简单”:)
function doGet(e)
var c = arguments[0].queryString
Logger.log(c);
非常感谢瓦卡尔! :)
赛多
【讨论】:
不确定发生了什么,但它会出现,但在“部署应用程序”窗口中的 URL 中提供的密钥与单击“测试最新代码的 Web 应用程序”后的密钥不同(除此之外开发人员与执行人员)。一旦我复制了浏览器中显示的链接,而不是部署应用程序窗口中提供的链接,它就可以工作了。但是,我仍然不确定我的步骤是否有问题或谷歌是否有问题。任何人都可以对此有所了解吗?我认为它应该是相同的!【参考方案4】:使用以下修改后的代码来获得您在 e 中可以期待的内容。
您可以通过使用带有 URL 参数(如 val=123
)的服务 URL 运行此代码来检查
function doGet(e)
Logger.log('in doGet function');
Logger.log(JSON.stringify(e));
从服务 URL 运行后,我得到了
[13-10-01 12:28:22:408 IST] in doGet function
[13-10-01 12:28:22:409 IST] "queryString":"val=123","parameter":"val":"123","contextPath":"","parameters":"val":["123"],"contentLength":-1
现在您可以使用您的 JavaScript 技能从这个 JSON 中获取所需的内容。
【讨论】:
以上是关于从 url 获取参数返回“参数未定义”的主要内容,如果未能解决你的问题,请参考以下文章