我发布了以下代码的内容:
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'。任何建议?
答案 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'];