【问题标题】:JSP Request Parameter truncated after passing to javascript functionJSP 请求参数在传递给 javascript 函数后被截断
【发布时间】:2014-05-14 19:09:53
【问题描述】:

我有一个参数有问题,我试图将它传递给一个 Javascript 函数,在该函数中参数被截断。

在我的Servlet中,我设置了一个参数request.setAttribute("questions", service.getQuestions("123"))

它设置了一个问题列表,每个问题包含几个值;

我使用 JSTL 循环 <c:forEach var="data" items="${questions}">...</c:forEach> 遍历它们,然后我可以像 ${data.question}, ${data.options} 等那样访问值。

console.log(${data.question}) 返回一个 123,45,35|43,94,73|23,91,34 形式的值,这与预期的一样。

但是当我尝试将这个${data.question} 传递给诸如<script>MyFunction(${data.question})</script> 之类的javascript 函数时,它只接收123

MyFunction(data) {
    console.log(data); //Only shows 123
    //Split the string into arrays for processing
}

【问题讨论】:

  • 因为它返回数组的第一个元素
  • @sankrish 这是一个字符串,而不是一个数组。
  • ${data.question}for-each 循环之外将单独保存当前迭代的值
  • ${data.question} 是字符串 123,45,35|43,94,73|23,91,34,而不是数组。循环是遍历列表questionsquestions 包含多个具有questionoptions 等属性的对象。

标签: java javascript jsp servlets jstl


【解决方案1】:

您收到第一个元素是因为您的函数需要一个参数,而您的值 123,45,35|43,94,73|23,91,34 用逗号分隔,因此它会查找类似不同参数的函数。使用 arguments 属性 insted 或将所有 值作为字符串传递给 '' 像这样

<script>MyFunction('${data.question}')</script>

对不起我的英语..仍在努力

【讨论】:

  • 我明白了,它被传递为 MyFunction(123, 45, ...) 而不是 MyFunction("123,45,...")
  • 别忘了逃跑!见How to escape JavaScript in JSP?&lt;script&gt;MyFunction('${util:escapeJS(data.question)}')&lt;/script&gt;
猜你喜欢
  • 1970-01-01
  • 2018-03-01
  • 2021-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多