首页 > 解决方案 > 如何将 HTML 小部件的值从 HTML 表单传递到 eXist-db 中的 Xquery?

问题描述

在我看来,这个问题代表了先前请求中指出的特定问题的普遍化:请参阅相关问题(这就是我敢于发送第二个帮助请求的原因)。对于如何将 html 小部件的值传递给 Xquery 的问题,我仍然找不到答案。

特定的小部件是一个文本区域,通过外部函数添加到 html 表单(而不是 XForm!),其代码可以在提到的相关问题中找到。所以,相关的 html 代码块(一旦函数被执行)是这样的:

  <form method="post" action="query_update_notabene.xq">
        <textarea id="my_textarea">loaded_text</textarea>
    <br>        
    <table border="0">
        <tr>                
           <td>
                <input type="submit" value="Salva nota">
            </td>
            <td style="width: 20px;"></td>
           <td>
                <input type="reset">
            </td>
       </tr>
    </table>
  </form>

在我的“query_update_notabene.xq”中,我根本无法获取 textarea 值,该值对应于要保存回 xml 文件的文本内容(新的或编辑的)。关于以下两种可能性,我已经尝试了所有我能想到的口味:

let $nota_text := request:get-parameter("my_textarea","")

let $nota_text := request:get-data()

但似乎没有任何效果,甚至没有:

let $nota_text := request:get-data()/body/form/div[@id='main']/textarea[@id='my_textarea']/text()

任何人都可以帮忙吗?

谢谢

亚历克斯

标签: htmlformsxqueryexist-db

解决方案


当我找到解决方案时,我自己回答。像往常一样在编程中不能使用类比,必须非常精确!错误是在这里使用“id”而不是“name”:

<textarea id="my_textarea">loaded_text</textarea>

这意味着,回到构造 Xquery,以下内容:

<textarea id="my_textarea">{$my_content}</textarea> };

必须改为:

<textarea name="my_textarea">{$my_content}</textarea> };

因此,Xquery 现在可以通过一个简单的方法来掌握 textarea 的内容:

let $nota_text := request:get-parameter("my_textarea","")

推荐阅读