将表单值附加到post上的隐藏XML字符串

时间:2011-09-26 10:07:55

标签: php jquery xml

我将表单发布到远程服务器,并且必须通过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字符串。

非常感谢提前!

3 个答案:

答案 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());
    });
});