我将表单发布到远程服务器,并且必须通过XML格式的字符串作为隐藏字段发送,其中包含输入的信息。我努力将输入的输入值附加到XML字符串,例如:
<input type="text" name="firstname" id="fname" />
<input type="text" name="lastname" id="sname" />
XML就是这样:
<input type="hidden" name="parameters" value="<request><first_name>Test User</first_name> <surname>XXXX</surname></request>"/>
如何在理想情况下使用PHP在POST时将输入中输入的值应用于XML字符串,以便用户输入的姓氏和姓氏发布?
我尝试过Jquery,但它破坏了XML字符串。
非常感谢提前!
答案 0 :(得分:4)
我认为你需要使用javascript来操作参数值。示例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script language="javascript">
function callme()
{
document.getElementById('parameters').value="<request><first_name>"+document.getElementById('fname').value+"</first_name> <surname>"+document.getElementById('sname').value+"</surname></request>";
document.getElementById('loginForm').submit();
}
</script>
</head>
<body>
<form id="loginForm">
<input type="text" name="firstname" id="fname" />
<input type="text" name="lastname" id="sname" />
<input type="hidden" id="parameters" name="parameters" value=""/>
<input type="button" onclick="javascript:callme()" />
</form>
</body>
</html>
答案 1 :(得分:0)
我认为你应该做这个服务器端,因为恶意用户可以发布任何内容。必须转义您的名字和姓氏值比验证xml的正确性要容易得多。
$first = htmlspecialchars($_GET['firstname']);
$last = htmlspecialchars($_GET['lastname']);
$xml = sprintf
( '<request>
<first_name>%s</first_name>
<last_name>%s</last_name>
</request>',
$first, $last
);
除非你需要通过ajax将xml发送到不同的URL,否则没有理由在javascript中执行此操作。
编辑此解决方案也适用于关闭javascript的用户(例如无脚本用户)。
答案 2 :(得分:0)
html -
<input type="text" name="firstname" id="fname" />
<input type="text" name="lastname" id="sname" />
<input type="hidden" id="parameters" />
<input type="button" name="click" id="button" value="button" />
脚本 - 使用参数并在提交之前设置,例如
$(document).ready(function() {
var parameters = "<request><first_name>YYYY</first_name> <surname>XXXX</surname></request>";
$('#button').click(function(){
parameters = parameters.replace('YYYY',$('#fname').val());
parameters = parameters.replace('XXXX',$('#sname').val())
$('#parameters').val(parameters);
alert($('#parameters').val());
});
});