如何使用Ajax在ofbiz形式? [英] How to use ajax in ofbiz Forms?
问题描述
我使用的是下拉的标签,但我想更新后,选择在这一个选项的另一个领域。我使用它的形式。我知道我们可以使用AJAX提交和更新,但在FTL,我找不到领域的哪些属性或下拉可以帮助?
谢谢!
我找到了一种方法来解决这个问题。我们将使用JS来发布,发送一个请求,并得到使用JSON格式的数据。 例如:
- 在我的形式:
<字段名称=firstFieldId> <下拉允许空=假> <列表选项键名=firstFieldId列表名称=listOptions1描述=$ {} DES1/> < /下拉> < /场> <字段名称=secondFieldId> <下拉允许空=假> <列表选项键名=secondFieldId列表名称=listOptions描述=$ {} DES2/> < /下拉> < /场>
$(文件)。就绪(函数(){ $(中选择[名称='firstFieldId'])。改变(函数(){ 更新($(本).VAL()); }); }); 功能更新(ID){ jQuery.ajax({ 网址:myRequest, 键入:POST, 数据:{ firstFieldId:ID }, 成功:函数(RES){ VAR数据= res.listOptions; renderHtml(数据); } }); } 函数renderHtml(数据){ VAR Y =; 对于(VAR的X数据){ Y + =<期权价值='+数据[X] .secondFieldId +'>中; Y + =数据[X] .des2 +< /选项>中; } $(中选择[名称='secondFieldId'])HTML(Y)。 }
- 屏幕:
<操作> <设置字段=layoutSettings.javaScripts [+ 0]值=/ delys /图片/ JS / logistics.js全球=真/> < /操作>
-
Controller.xml:
<请求映射URI =myRequest> <安全身份验证=真正的HTTPS =真/> <事件类型=服务援引=为myService>< /事件> <响应NAME =成功TYPE =请求值=json的>< /响应> < /请求地图>
-
在共controller.xml JSON请求:
<请求映射URI =json的> <安全直接请求=FALSE/> <事件类型=java的路径=org.ofbiz.common.CommonEvents援引=jsonResponseFromRequestAttributes/> <响应NAME =成功类型=无/> < /请求地图>
I'm using drop-down tag but I want to update another fields after selected an option in this. I'm using it in Forms. I know we can using ajax to submit and update but in ftl, I can't find which attribute of field or drop-down can help ?
Thanks!
I found a way to resolve this problem. We will use js to post, send a request and get data with json format. Example:
- my Forms:
<field name="firstFieldId"> <drop-down allow-empty="false"> <list-options key-name="firstFieldId" list-name="listOptions1" description="${des1}"/> </drop-down> </field> <field name="secondFieldId"> <drop-down allow-empty="false"> <list-options key-name="secondFieldId" list-name="listOptions" description="${des2}"/> </drop-down> </field>
- create test.js:
$(document).ready(function(){ $("select[name='firstFieldId']").change(function(){ update($(this).val()); }); }); function update(id) { jQuery.ajax({ url: 'myRequest', type: "POST", data:{ firstFieldId: id }, success: function(res) { var data = res.listOptions; renderHtml(data); } }); } function renderHtml(data){ var y = ""; for (var x in data){ y += "<option value='" + data[x].secondFieldId + "'>"; y += data[x].des2 + "</option>"; } $("select[name='secondFieldId']").html(y); }
- Screens:
<actions> <set field="layoutSettings.javaScripts[+0]" value="/delys/images/js/logistics.js" global="true"/> </actions>
Controller.xml :
<request-map uri="myRequest"> <security auth="true" https="true"/> <event type="service" invoke="myService"></event> <response name="success" type="request" value="json"></response> </request-map>
In myService returns listOptions will parse to json format.
json request in common-controller.xml:
<request-map uri="json"> <security direct-request="false"/> <event type="java" path="org.ofbiz.common.CommonEvents" invoke="jsonResponseFromRequestAttributes"/> <response name="success" type="none"/> </request-map>
This is my way, thanks!
这篇关于如何使用Ajax在ofbiz形式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!