Javascript 现在我';我已经将内容发布到我的PHP脚本中,如何获取它?

Javascript 现在我';我已经将内容发布到我的PHP脚本中,如何获取它?,javascript,php,ajax,post,xmlhttprequest,Javascript,Php,Ajax,Post,Xmlhttprequest,我发布的内容代码如下: function checkphp() { var xml = new XMLHttpRequest(); xml.open("POST", 'testphp.php'); xml.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xml.send('alame=Henry'); xml.onreadystatechange = functio

我发布的内容代码如下:

function checkphp() {
    var xml = new XMLHttpRequest();
    xml.open("POST", 'testphp.php');
    xml.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xml.send('alame=Henry');
    xml.onreadystatechange = function() {
        if (xml.readyState == 4 && xml.status == 200) {
            document.body.innerHTML = xml.responseText;
        }
    }
}
我试过这个:

echo($_POST['alame']) or die("Nothing was posted");

但它不起作用。。。它吐出“1”。有什么建议吗

我测试了您的脚本,我们可以看到testphp.php这样的消息:

<?php
//
//var_dump($_POST);
//echo($_POST['alame']) or die("Nothing was posted");
//
echo $_POST['alame'];
?>
返回1

echo在此处用作函数,但不能用作函数,请参见:

echo实际上不是一个函数(它是一种语言构造),因此 不需要使用括号。回声(与其他声音不同) 语言构造)的行为不像函数,因此它不能 始终在函数的上下文中使用

所以在这种情况下,1是一个不可预测的结果,我无法解释

或者您可以使用以下选项:

echo isset($_POST['alame']) ? $_POST['alame'] : "Nothing was posted";

我测试了您的脚本,我们可以通过testphp.php看到您的消息,如下所示:

<?php
//
//var_dump($_POST);
//echo($_POST['alame']) or die("Nothing was posted");
//
echo $_POST['alame'];
?>
返回1

echo在此处用作函数,但不能用作函数,请参见:

echo实际上不是一个函数(它是一种语言构造),因此 不需要使用括号。回声(与其他声音不同) 语言构造)的行为不像函数,因此它不能 始终在函数的上下文中使用

所以在这种情况下,1是一个不可预测的结果,我无法解释

或者您可以使用以下选项:

echo isset($_POST['alame']) ? $_POST['alame'] : "Nothing was posted";

您得到的是
1
,因为PHP正在回显($\u POST['alname'])(
true
)或die的值

在JavaScript等语言中,您可能会期望出现不同的行为:

// In JS
var someVal = false;
var somethingElse = someVal || "fallback";
console.log(somethingElse); // "fallback"
然而,在PHP中,整个表达式都是经过计算的,所以

// In PHP
$someVal = false;
$somethingElse = $someVal || "fallback";
echo $somethingElse; // 1
$someVal | | |“fallback”
的计算结果为true,因为PHP将它们归结为
(false | | true)=>true

@jacouh错误地认为,获取
1
是不可预测的,但您应该以不同的方式检查变量,如三元或类似的方法,例如

if(!isset($_POST['alame']))
    die("Noting was posted");

// Continue and do something with $_POST['alame'];

您得到的是
1
,因为PHP正在回显($\u POST['alname'])(
true
)或die的值

在JavaScript等语言中,您可能会期望出现不同的行为:

// In JS
var someVal = false;
var somethingElse = someVal || "fallback";
console.log(somethingElse); // "fallback"
然而,在PHP中,整个表达式都是经过计算的,所以

// In PHP
$someVal = false;
$somethingElse = $someVal || "fallback";
echo $somethingElse; // 1
$someVal | | |“fallback”
的计算结果为true,因为PHP将它们归结为
(false | | true)=>true

@jacouh错误地认为,获取
1
是不可预测的,但您应该以不同的方式检查变量,如三元或类似的方法,例如

if(!isset($_POST['alame']))
    die("Noting was posted");

// Continue and do something with $_POST['alame'];

定义“不起作用”。有什么事发生吗?你收到错误信息了吗?你检查过服务器日志了吗?是否有相关的消息?如果您的testphp.php是一个好脚本,那么调用的html文档应该显示此内容“Henry”。此问题似乎与主题无关,因为它涉及一个无法复制的问题。请定义“不起作用”。有什么事发生吗?你收到错误信息了吗?你检查过服务器日志了吗?那里有相关的消息吗?如果您的testphp.php是一个很好的脚本,那么调用的html文档应该显示“Henry”这一内容。这个问题似乎与主题无关,因为它涉及一个无法复制的问题。我猜为什么会出现
echo()
返回1表示传递的语句被计算为布尔值-
echo(true或die())
会给出一个真实的(1)返回。但是PHP::echo不会返回任何东西,请测试$i=echo(“这很糟糕”);发生错误。值1仍然是一个谜。+1您还提到echo确实不是一个函数-它被“处理”为语法,但实际上($_POST['alame'])只是它自己的-
echo('something')
仍然回显“something”,因为(and)在这个上下文中对PHP来说并不重要,除了在算术中作为分隔符-
回显(4/2)+3;//5
echo()返回1的原因我猜想是传递的语句被计算为布尔值-
echo(true或die())
会给出一个真实的(1)返回。但是PHP::echo不会返回任何东西,请测试$i=echo(“这很糟糕”);发生错误。值1仍然是一个谜。+1您还提到echo确实不是一个函数-它被“处理”为语法,但实际上($_POST['alame'])只是它自己的-
echo('something')
仍然回显“something”,因为(and)在这个上下文中对PHP来说并不重要,除了在算术中作为分隔符-
回显(4/2)+3;//5