1

次のコードを含むコンテンツを投稿しました。

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' を吐き出します。疑いはありますか?

4

2 に答える 2

1

スクリプトをテストしました。次のような testphp.php でメッセージが表示されます。

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

「Henry」は、期待どおりドキュメントの本文に表示されます。

これとともに:

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

1 が返されます。

ここでは関数として echo が使用されていますが、これは使用できません。http : //fr.php.net/echoを参照してください。

echo は実際には関数ではありません (言語構造です) ので、括弧を使用する必要はありません。echo (他の一部の言語構造とは異なり) は関数のように動作しないため、常に関数のコンテキストで使用できるとは限りません。

したがって、このコンテキストでは 1 は予測できない結果であり、説明はありません。

または、これを使用することもできます:

echo isset($_POST['alame']) ? $_POST['alame'] : "Nothing was posted";
于 2013-11-09T21:35:41.333 に答える
0

1PHP が ($_POST['alname'])( true) OR die;の値を echo'ing しているためです。

$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"PHP がそれらを(false || true) => true

@jacouh は1、 を取得することが予測できないという点で間違っていますが、変数を別の方法でチェックする必要があることは非常に正しいです。

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

// Continue and do something with $_POST['alame'];
于 2013-11-10T06:00:27.987 に答える