如何在点击提交按钮的url中发布xml格式请求


how to post xml formate request in url on submit button click

我的表单

<form action="test.php" name="form" method="post">
  <label>msisdn :-</label>
  <input type="text" name="msisdn" />
  <br>
  <br>
  <label>command :-</label>
  <input type="text" name="command" value="getimis" />
  <br>
  <br>
  <label>username :-</label>
  <input type="text" name="name" />
  <br>
  <br>
  <label>password :-</label>
  <input type="text" name="password" />
  <br>
  <br>
  <input type="submit" name="submit" />
</form>

=>如何在此url http://206.190.228.185/vl/vl_api_bill.php 中的提交按钮中发布xml请求

=>在此表单中,xml请求发送到提交按钮,点击post-url。。

请求

<bill-request>
  <msisdn>123456789</msisdn>
  <command>getimsi</command>
  <username>bob</username>
  <password>dcba</password>
</bill-request>

响应

<bill-response>
  <status>success</status>
  <msg>123456789</msg>
</bill-response>

您不能直接从html表单发送xml数据。您可以使用jquery ajax来完成这一操作。

添加onclick to submit按钮,停止默认事件并使用jquery ajax post xml数据

<input type="submit" name="submit" onclick="funcName(event)"/>
<script>
function funcName()
{
event.preventDefault();
var msisdn = document.getElementsByName("msisdn")[0].value;
var command = document.getElementsByName("command")[0].value;
var username = document.getElementsByName("name")[0].value;
var password = document.getElementsByName("password")[0].value;
var data = '<bill-request><msisdn>' + msisdn + '</msisdn><command>' + command   + '</command><username>' + username  + '</username> <password>' + password  + '</password></bill-request>';
$.ajax({
    type: 'POST',
    url: 'url',
    dataType: 'xml',
    data: data,
    contentType: 'application/xml;',
    success: function (response) {},
    error: function (ex) {}
  });
}
</script>

HTML表单可以以application/x-www-form-urlencoded格式(紧凑)、multipart/form-data格式(支持文件上传)或text/plain格式(没有实际用途,与其他工具配合使用效果更好)发送数据。

XML不是一个选项。

如果您需要从浏览器发送XML,那么您必须使用JavaScript。您可以使用DOM从表单中提取数据,构建XML,然后使用XMLHttpRequest对象发送数据

您可以使用以下代码

  <?php
        error_reporting(0);
        function to_xml($arr,$wrapper = 'bill-request',$cycle = 1)
        {
          $new_line = "'n";

          if($cycle == 1) { $output = '<?xml version="1.0" encoding="UTF-8" ?>'.$new_line; }
          $output.= tabify($cycle - 1).'<'.$wrapper.'>'.$new_line;
          foreach($arr as $key => $val)
          {
            if(!is_array($val))
            {
              $output.= tabify($cycle).'<'.htmlspecialchars($key).'>'.$val.'</'.htmlspecialchars($key).'>'.$new_line;
            }
            else
            {
              $output.= print_r_xml($val,$key,$cycle + 1).$new_line;
            }
          }
          $output.= tabify($cycle - 1).'</'.$wrapper.'>';

          return $output;
        }

        function tabify($num_tabs)
        {
          for($x = 1; $x <= $num_tabs; $x++) { $return.= "'t"; }
          return $return;
        }
        $xml= to_xml($_POST);
        print_r($xml);
        ?>
        <form name="form" method="post">
            <label > msisdn :- </label>
            <input type="text" name="msisdn"  /><br><br>
            <label> command :- </label>
            <input type="text" name="command" value="getimis" /><br><br>
            <label> username :- </label>
            <input type="text" name="name"  /><br><br>
            <label> password :- </label>
            <input type="text" name="password"  /><br><br>
            <input type="submit" name="submit"/>
        </form>