我是一个尝试使用XMLHttpRequest的新手。我研究了许多散布在互联网上的例子。我使用GET方法没有问题,但是当我尝试切换到POST时,它无法传输参数。 :(
这是我的简化示例,它复制了问题:
使用Javascript:
function GetPostTest(url)
{
var req = null;
var postParms = 'p1=x&p2=y';
var getParms = '';
getParms = 'g1=a&g2=b';
if ( getParms ) url += '?'+getParms;
req = new XMLHttpRequest
if ( req )
{
req.open( 'POST', url, true );
req.setRequestHeader( "Content-type", "application/x-www-form-urlencoded" );
req.setRequestHeader( "Content-length", postParms.length );
req.setRequestHeader( "Connection", "close" );
req.onreadystatechange = function()
{
if ( req.readyState == 4 && req.status == 200 )
{
alert( 'Got Stuff Back: ' + req.responseText );
}
}
req.send( postParms );
}
}
服务器:
<?php
foreach ( $_POST as $key=>$value ) echo htmlspecialchars(' _POST['.$key.']=['.$value.']');
foreach ( $_GET as $key=>$value ) echo htmlspecialchars(' _GET['.$key.']=['.$value.']');
foreach ( $_REQUEST as $key=>$value ) echo htmlspecialchars(' _REQUEST['.$key.']=['.$value.']');
exit;
?>
在此示例中,服务器仅报告其收到的所有GET和POST参数,然后显示在警告框中。我也在那里抛出了几个GET参数。我传递的参数是:
警告框显示:“有回填:_GET [g1] = [a] _GET [g2] = [b] _REQUEST [g1] = [a] _REQUEST [g2] = [b]”。这告诉我它发送到服务器没问题,然后回来没关系,只是POST变量没有通过。
我关闭了getParms,所以我只发送POST参数,然后我看不到任何变量。我关闭了我在示例代码中看到的三个setRequestHeader()或其他变体的任意组合,并且它不会改变任何内容。
我正在使用Google Chromium Version 24.0.1312.56 Ubuntu 11.10(24.0.1312.56-0ubuntu0.11.10.1)和Apache在Xubuntu 2.2.20-1ubuntu1.3上使用PHP进行测试。
感谢您的分析。如何解决此问题以推动POST参数?
答案 0 :(得分:0)
我刚刚复制了你的代码并尝试了它,它运行得很好。