gpt4 book ai didi

带有来自jsp的json参数的javascript函数

转载 作者:行者123 更新时间:2023-12-02 18:33:03 25 4
gpt4 key购买 nike

使用 jsp 中的 json 参数调用 js 函数时出现问题。

JSP 代码:

  <%
JSONObject json = (JSONObject)request.getAttribute("json");
out.println("json : " + json); // able to print this json object
%>

<body onload="printReviews(${json})">
</body>

Javascript 代码:

  function printReviews(jsonobj){
alert('jsonobj : ' + jsonobj);
}

另外,我尝试了 scriptlet 方式:onload="printReviews('<%=json%>')"。

我不明白为什么在 javascript 中无法获取 JSON 对象。请向我建议任何其他替代方案,将 JSON 对象传递给我从 Servlet 获取的 javascript 函数。

最佳答案

我认为这是因为代码

body onload="printReview(${json})"

我相信带有 JSON 对象的 jsp EL ${json} 会被强制转换为字符串,并在页面呈现时被其实际内容替换。由于这是 JSON 格式,因此您显然会得到类似 {"mykey":"myvalue"} 的内容。所以发生的事情是你的 printReview 函数实际上变成了这样,

body onload="printReview({"mykey":"myvalue"})"

如您所见,除非您转义双引号或使用单引号包裹 printReview 函数,否则无法执行,例如

body onload='printReview(${json})'

这应该可以工作,但是直到 json 响应中出现任何单引号为止。到那时你也必须逃避它

现在,当您在 printReview 中传递变量(在您的情况下为 jsonData)时,不会发生此 JSON 对象到字符串的转换,因此当您将代码更改为

body onload="printReviews(jsonData);"

关于带有来自jsp的json参数的javascript函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17625534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com