我想将代码标题和价格作为参数发送到book对象,但是会给出非法的start expression错误。
function addrecord() {
code = document.getElementById('code').value;
title = document.getElementById('title').value;
price = parseFloat(document.getElementById('price').value);
<% Book book = new Book(%> code <% ,%> title <% , %> price <% );
bookdb.addRecord(book);
%>
document.getElementById("code").value = "";
document.getElementById("title").value = "";
document.getElementById("price").value = "";
}
答案 0 :(得分:3)
你误解了java和javascript的运行位置。 您使用&lt;%和%&gt;好像它将值发送到服务器,而不是。这些标签仅在jsp内部使用,以启动java代码的片段。这仅在您生成页面时有效。一旦你的html在你的浏览器上,这些标签就不会做任何事情。
突出显示重要的关键字,这不是作为sarcarsm
当您使用浏览器请求jsp页面时,浏览器会打开与服务器的网络连接。把这两个(浏览器,服务器)想象成生活在两个完全不同的地方。
服务器然后运行java代码。执行时,它会生成 html页面。 此 html页面通过网络连接发送回客户端(您的浏览器)
您的浏览器将收到此完整格式的html页面并使用它来创建它的视图。在此页面上,您可以运行javascript,但javascript只能在客户端上运行(浏览器)
要再次将任何变量返回服务器,您需要:获取或发布表单(使用表单内的提交,或使用JavaScript post request like a form submit), ajax调用(http://www.javascriptkit.com/dhtmltutors/ajaxgetpost.shtml)或让用户点击链接(href =&#34; ...您的页面&#34;)。
最简单的方法是:
<form method="POST" action="your/page/url">
<input type="hidden" name="someName" value="someValue" />
<input type="submit" />
</form>
阅读一些链接并确保牢记,您的浏览器和服务器是分开的,因此在您的浏览器中运行javascript将无法访问服务器。
答案 1 :(得分:1)
见这里:Assign JavaScript variable to Java Variable in JSP
正如所述,当JSP在服务器上执行时,它实际上是不可能的,并且javascript稍后会在浏览器中执行。