我的表单
<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>