既然我已将内容发布到我的PHP脚本中,我该如何获取它?

时间:2013-11-09 21:06:20

标签: 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 = function() {
        if (xml.readyState == 4 && xml.status == 200) {
            document.body.innerHTML = xml.responseText;
        }
    }
}

我试过了:

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

但它不起作用......它吐出'1'。任何建议?

2 个答案:

答案 0 :(得分:1)

我测试了你的脚本,我们可以看到你带有testphp.php的消息:

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

“亨利”将按预期显示在文件正文中。

有了这个:

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

1返回。

echo在这里用作函数,但它不能,请参阅http://fr.php.net/echo

  

echo实际上并不是一个函数(它是一种语言结构),所以你   不需要使用括号。回声(与其他一些不同   语言结构)不像一个函数,所以它不能   总是在函数的上下文中使用。

所以1在这种背景下是一个不可预测的结果,我没有解释。

或者你可以使用它:

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

答案 1 :(得分:0)

你得到1因为PHP回显了($ _POST ['alname'])(true)或者死亡的价值;

$someVar = 'test';
$someBool = false;

$a = ($someVar) || die();
echo $a; // 1
var_dump($a); //bool(true)

$a = ($someBool) || die(); // dies

在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'];