【问题标题】:How to use Ajax in BSP?如何在 BSP 中使用 Ajax?
【发布时间】:2012-10-02 01:30:57
【问题描述】:

到目前为止,我已经成功地让我的 BSP MVC 模型工作。

这是我的代码。

查看

<body>
    <z:form>
   <z:input binding="//c/counter"
            invisible="true"/>
    Counter : <z:write binding="//c/counter"/>
        
    <z:button fcode="incr"
                      text="Increase"/>
    <z:button fcode="decr"
                      text="decrease"/>
    </z:form>
  </body>

控制器
我通过 fcode 调用 Controller 中的“fcode_incr”方法。 'c' 是 zcl_counter 的模型实例。 它有一个属性计数器,该方法将增加该计数器。

method fcode_incr.
   c->increment( ).
endmethod.

我希望 zcl_model 是显而易见的,它的代码在这里不相关。

当我按下“增加”按钮时,服务器发送请求的问题。当它得到响应时,它会刷新页面。所以我得到了增加的值。 我怎样才能让它与 Ajax 一起工作,从而使页面保持不刷新?

我已经尝试过使用“带有 flowlogic 的 XML 页面”的 Ajax。 比如“事件处理程序-->OnRequest”

request->get_form_field('variable').

还有帮助吗?

正确的 Ajax调用应该是

$.ajax({
        url:'ajaxController.do',
        statusCode:{
          404: function(){
            alert("not found");
          }
        },
        success: function(data){
          $('#viewData').html(data);
        }
       }).error(function(){
          alert("failed");
});

【问题讨论】:

    标签: ajax model-view-controller sap-bsp


    【解决方案1】:

    此链接说明详情:http://www.saptechnical.com/Tutorials/BSP/AJAX/create.htm

    但是,本质上;

    1. 在你的 bsp 页面中集成一些 javascript 以便你可以做 ajax,这里有一些选项:

      • 要么从该链接获取代码
      • 或者更好的解决方案是使用 jQuery,或者通过
        • 使用&lt;link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/themes/base/jquery-ui.css" type="text/css" /&gt;
        • 或上传 http://code.jquery.com/jquery-1.8.2.min.js 并在您的代码中引用它

      您可以像这样使用 jQuery 调用 ajax 调用:http://api.jquery.com/jQuery.ajax/

    2. 在您的 BSP 项目中创建一个将从 AJAX 调用的控制器。

    3. 为您的控制器创建一个控制器类,只需重新定义 REQUEST 并将您的逻辑放在那里

    完成。

    【讨论】:

    • 我有一个名为 ZKTH_BSP_AJAX 的控制器。如何从 Ajax 调用它? xmlhttp.open("GET",控制器 ??, true);以这种方式?
    • 控制器的名称是暴露在网络上的名称,我不确定我是否会称它为 ZKTH_BSP_AJAX。无论如何,你会用 xmlhttp.open("GET", "ZKTH_BSP_AJAX" , true);虽然真的,我会花时间学习使用 jQuery 库的 AJAX 调用。
    • 我在 JQuery 中学习了 Ajax 调用。但我不确定如何实现它。我在控制器中有一个名为 fcode_save 的方法。我应该调用这个方法,所以我可以捕获返回值。 $.ajax({url: controller, data: inputName etc..}) 方法是从哪里来的?
    • 只是为了确定,您的控制器类是从 CL_BSP_CONTROLLER2 派生的吗?它必须。完成后,您需要从 http 请求 (l_year = request-&gt;get_form_field( 'year' ).) 中获取变量,调用 fcode_save,然后使用 CALL METHOD response-&gt;append_cdata EXPORTING data = l_output. 将输出返回到 http 请求
    • 啊,好的。您可能错过了第 2 步。在您的 BSP 项目中创建一个将从 AJAX 调用的控制器。右键单击您的 BSP 应用程序,创建一个具有名称的控制器,例如“doSomething”并将其链接到您的类ZCL_CO_KTH_AJAX2。从那时起,ajax 应该引用doSomething,而不是ZCL_CO_KTH_AJAX2。此外,方法do_request 应该有response-&gt;append_cdatarequest-&gt;get_form_field
    猜你喜欢
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    • 2012-02-28
    • 2015-02-21
    相关资源
    最近更新 更多