ajax调用在ofbiz中单击复选框时执行操作

ajax调用在ofbiz中单击复选框时执行操作,ajax,jquery,ofbiz,Ajax,Jquery,Ofbiz,我想使用带有选项id1、id2的复选框。当我选择id1时,ajax将运行javascript并调用相应的操作并返回响应。我不想重新加载页面。请发布一些freemarker、controller.xml和java代码来执行此操作。基于我对问题的理解,以下脚本可能对您有所帮助: 在ftl文件本身/单独的js文件中添加以下脚本: <script type="text/javascript"> jQuery(document).ready(function(){ jQue

我想使用带有选项id1、id2的复选框。当我选择id1时,ajax将运行javascript并调用相应的操作并返回响应。我不想重新加载页面。请发布一些freemarker、controller.xml和java代码来执行此操作。

基于我对问题的理解,以下脚本可能对您有所帮助:

在ftl文件本身/单独的js文件中添加以下脚本:

  <script type="text/javascript">
   jQuery(document).ready(function(){


   jQuery("#id1").click(function(){

         if(jQuery(this).is(":checked")) {
           var reqUrl= "checkbox1_Url";
            sendAjaxRequest(reqUrl);             
               }

        });

    jQuery("#id2").click(function(){

         if(jQuery(this).is(":checked")) {
           var reqUrl= "checkbox2_Url";
            sendAjaxRequest(reqUrl);             
               }

        });
     });

  function sendAjaxRequest(reqUrl){
    jQuery.ajax({

     url    : reqUrl,
     type   : 'POST',
     data   : {'var1': 'val1', 'var2' : 'val2'}, //here you can pass the parameters to  
                                                   //the request if any.
     success : function(data){

              //You handle the response here like displaying in required div etc. 
               },
      error : function(errorData){

              alert("Some error occurred while processing the request");
              }


    });

   }
   </script>

jQuery(文档).ready(函数(){
jQuery(“#id1”)。单击(函数(){
if(jQuery(this).is(“:checked”)){
var reqUrl=“checkbox1_Url”;
sendAjaxRequest(请求URL);
}
});
jQuery(“#id2”)。单击(函数(){
if(jQuery(this).is(“:checked”)){
var reqUrl=“checkbox2_Url”;
sendAjaxRequest(请求URL);
}
});
});
函数sendAjaxRequest(请求URL){
jQuery.ajax({
url:reqUrl,
键入:“POST”,
数据:{'var1':'val1','var2':'val2'},//在这里可以将参数传递给
//如果有请求,请通知我。
成功:功能(数据){
//您可以在这里处理响应,如在required div中显示等。
},
错误:函数(errorData){
警报(“处理请求时发生错误”);
}
});
}
在freemarker中

  <input type="checkbox" id="id1" name="checkbox1" />
  <input type="checkbox" id="id2" name="checkbox2" />

在controller.xml中:

 <request uri="checkbox1_Url">
   <!-- fire if any events are here -->
   <response name="success" type="view" value="ViewName1" />
   <response name="error" type="view" value="errorViewName" />
 </request>

<request uri="checkbox2_Url">
   <!-- fire if any events are here -->
   <response name="success" type="view" value="ViewName2" />
   <response name="error" type="view" value="errorViewName" />
 </request>



  <view-map name="ViewName1" type="screen" page="component://.../widget/screensFileName#screenName"/>

  <view-map name="ViewName2" type="screen" page="component://.../widget/screensFileName#screenName"/>
   <request uri="categoryurl">
       <!-- fire if any events are here -->
       <response name="success" type="view" value="ViewName" />
       <response name="error" type="view" value="errorViewName" />
    </request>

 <view-map name="ViewName" type="screen" page="component://.../widget/screensFileName#screenName"/>

您可以按照上述路径(view map tag的page=“…”属性)中的指定在小部件中定义两个屏幕。

YandaMuri
切坦·巴加特
在Controller.xml中:

 <request uri="checkbox1_Url">
   <!-- fire if any events are here -->
   <response name="success" type="view" value="ViewName1" />
   <response name="error" type="view" value="errorViewName" />
 </request>

<request uri="checkbox2_Url">
   <!-- fire if any events are here -->
   <response name="success" type="view" value="ViewName2" />
   <response name="error" type="view" value="errorViewName" />
 </request>



  <view-map name="ViewName1" type="screen" page="component://.../widget/screensFileName#screenName"/>

  <view-map name="ViewName2" type="screen" page="component://.../widget/screensFileName#screenName"/>
   <request uri="categoryurl">
       <!-- fire if any events are here -->
       <response name="success" type="view" value="ViewName" />
       <response name="error" type="view" value="errorViewName" />
    </request>

 <view-map name="ViewName" type="screen" page="component://.../widget/screensFileName#screenName"/>

在viw地图标签的上页属性中指定的适当位置/路径中定义屏幕。 在这里,屏幕可能没有decorator,因此响应将没有decorator,因此您可以在当前页面中显示它们,而无需重新加载。整页


我想这可能会对您有所帮助。

您的意思是,您需要根据复选框的值更改actionUrl吗?例如:像“书籍”类别中的“yandamuri”书籍。你能提供更多的信息吗?如果我选择一个品牌,该品牌下的产品将出现在页面中,同样,如果我选择价格,则与价格匹配的产品将出现在同一页面中。它就像flipkart、myntra……等等的过滤器。你能发送一些测试源吗。我试过这种方法,但没有得到任何结果。请给出java源代码