前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用XMLHttpRequest 通过HTTP POST向ABAP backend发送数据

利用XMLHttpRequest 通过HTTP POST向ABAP backend发送数据

作者头像
Jerry Wang
发布2019-06-24 10:13:20
9690
发布2019-06-24 10:13:20
举报

Created by Jerry Wang, last modified on Aug 19, 2014

Javascript source code:

代码语言:javascript
复制
<html>
<head>
<script type="text/javascript">
var xmlhttp;
function GetXmlHttpObject()
{
    if (window.XMLHttpRequest) {
       return new XMLHttpRequest();
    }
    if (window.ActiveXObject) {
       return new ActiveXObject("Microsoft.XMLHTTP");
    }
    return null;
}
function stateChanged()
{
   if (xmlhttp.readyState == 4) {
       document.getElementById("result").innerHTML = xmlhttp.responseText;
       document.getElementById("result").style.border = "1px solid #A5ACB2";
  }
}
function getRequestURL(str)
{
    var url = <use your own url here>+ str;
    url = url + "&sid=" + Math.random();
    return url;
}
function showResult(str)
{
if (str.length == 0 ) {
  document.getElementById("result").innerHTML = "";
  document.getElementById("result").style.border = "0px";
  return;
}
xmlhttp = GetXmlHttpObject();
if (xmlhttp == null ){
  alert ("Your browser does not support XML HTTP Request");
  return;
  }
var requesturl = getRequestURL(str);
xmlhttp.onreadystatechange = stateChanged ;
if ("withCredentials" in xmlhttp) {
 console.log("Great!!!!!");
}
xmlhttp.open("POST",requesturl,true);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
var data = [];
data.push( escape("firstname=Jerry 1"));
data.push( escape("lastname=Wang 2")); 
xmlhttp.send(data.join("&"));
}
</script>
</head>
<body>
<input type="text" id="fname" onkeyup="showResult(this.value)" />
<div id = "result" ></div>
</body>
</html>

设置Content-Type为form-urlencoded, 即需要通过http post发送到server端的数据通过name-value pair的形式加到post url中去。 在ABAP 端能够成功还原出发送的firstname和lastname的数据:

clipboard1
clipboard1

在Chrome里观察到的form data:

clipboard2
clipboard2

如果content type改成text/plain:

代码语言:javascript
复制
xmlhttp.setRequestHeader("Content-Type", "text/plain");
var data = [];
data.push( escape("firstname=Jerry 1"));
data.push( escape("lastname=Wang 2")); 
xmlhttp.send(data.join("\r\n"));
clipboard3
clipboard3

则发送的firstname和lastname将不会出现在form fields里:

clipboard4
clipboard4

此时firstname和lastname只能通过request->get_cdata() 来读取:

代码语言:javascript
复制
server->request->get_header_fields( CHANGING fields = lt_header ).
  server->request->get_form_fields( CHANGING fields = lt_form ).
  lv_data = server->request->get_cdata( ).
  SPLIT lv_data AT cl_abap_char_utilities=>cr_lf INTO TABLE lt_result.
clipboard5
clipboard5

Chrome里出现的位置从Form Data 改成了Request payload:

clipboard6
clipboard6
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年06月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Created by Jerry Wang, last modified on Aug 19, 2014
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档