如何在提交按钮单击时在URL中发布xml格式化请求

时间:2016-05-04 06:54:18

标签: javascript php xml

我的表格

<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>

=&GT;如何在此网址http://206.190.228.185/vl/vl_api_bill.php

中的提交按钮中发布xml请求

=&GT;在这个formate 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>

3 个答案:

答案 0 :(得分:2)

你不能直接从html格式发送xml数据。你可以使用jquery ajax来完成这个。

添加onclick以提交按钮,停止默认事件并使用jquery ajax发布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>

答案 1 :(得分:0)

HTML表单可以application/x-www-form-urlencoded格式(紧凑),multipart/form-data格式(支持文件上传)或text/plain格式发送数据(没有实际用途,不是&#39用其他工具更好地服务。)

XML不是一种选择。

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

答案 2 :(得分:-1)

您可以使用以下代码

  <?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>