在JavaScript中获取php变量 - 选项

时间:2017-11-13 09:53:56

标签: javascript php ajax

我知道有类似的问题,但是,我有一些问题,因为他们提到了一些可能性,我不确定哪一种最适合我的情况。

我有一个表单,其中有一个部分,您可以输入xml文件的名称,然后使用php生成。使用php将文件名存储在变量中。为了访问xml文件,我想在JavaScript中检索php变量的值。 根据我的阅读,有几种可能性:

Ajax请求。我的问题:我尝试按照本教程(https://www.w3schools.com/xml/ajax_php.asp)。但我并不完全理解本教程。

  • 首先,在第一个例子中,"这是什么"? (例如this.responseText)

  • 其次,为什么它是" gethint.php?q =" + str而不是简单的" gethint.php" (在xmlhttp.open()中)?

  • 最后,$ q = $ _REQUEST [" q"];准确地告诉我?我知道某种变量被宣布但我不明白究竟是什么。

我还读到你可以使用cookies,但这在我的实例中是否有意义? 如果您需要更多信息,请告诉我,并提前感谢您的回复。

编辑:这是我尝试遵循的代码: HTML:

<html>
<head>
<script>
    function showHint(str) {
        if (str.length == 0) { 
            document.getElementById("txtHint").innerHTML = "";
            return;
        } else {
            var xmlhttp = new XMLHttpRequest();
            xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("txtHint").innerHTML = this.responseText;
            }
        };
        xmlhttp.open("GET", "gethint.php?q=" + str, true);
        xmlhttp.send();
    }
}
</script>
</head>
<body>

    <p><b>Start typing a name in the input field below:</b></p>
    <form> 
        First name: <input type="text" onkeyup="showHint(this.value)">
    </form>
    <p>Suggestions: <span id="txtHint"></span></p>
</body>
</html>

PHP:

// get the q parameter from URL
$q = $_REQUEST["q"];

$hint = "";

// lookup all hints from array if $q is different from "" 
if ($q !== "") {
    $q = strtolower($q);
    $len=strlen($q);
    foreach($a as $name) {
        if (stristr($q, substr($name, 0, $len))) {
            if ($hint === "") {
                $hint = $name;
            } else {
                $hint .= ", $name";
            }
        }
    }
}

// Output "no suggestion" if no hint was found or output correct values 
echo $hint === "" ? "no suggestion" : $hint;
?>

$ a是一个名称数组,为了节省空间,我没有在摘录中包含这些名称。

这是我的代码:

HTML:

<body onload="alertFunction()">
    <h1 id="title">Append to me:</h1>
    <p id="paragraph"></p>
</body>

JavaScript的:

function alertFunction() {
    var xhttp; 

    var xhttp = new XMLHttpRequest();

    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            var filename = xhttp.responseText;
            alert(filename);
        }
    };
    xhttp.open("GET", "profile3.php?q=", true);
    xhttp.send();
};

PHP:

<?php
    $q = $_REQUEST["q"];
    echo $filename 
?>

$ filename被声明为我的xml文档的名称。我没有包含那段代码,因为我知道那不是问题。

2 个答案:

答案 0 :(得分:0)

我不得不说w3schools并不是最好的资源。 但无论如何:

  

首先,在第一个例子中,&#34;这是什么&#34;? (例如   this.responseText)

XMLHttpRequest是一个对象,它具有属性。 this用于访问其事件处理程序(onreadystatechange)范围内的XMLHttpRequest对象属性。

  

其次,为什么它是&#34; gethint.php?q =&#34; + str而不是简单   &#34; gethint.php&#34; (在xmlhttp.open()中)?

这是一个使用问题,但在本例中,您希望将数据发送到服务器端,然后服务器端的脚本对此数据执行某些操作并返回响应。因此,您要使用查询字符串传递str变量。

  

最后,$ q = $ _REQUEST [&#34; q&#34;];准确地告诉我?我知道   声明了某种变量,但我不明白它是什么   确切地说。

继续前一点,现在服务器端脚本转向获取我们在ajax请求中发送的数据。 q是查询字符串变量。 (?q=something) 通过使用$_REQUEST['q'],脚本将能够访问该值。因此,如果$q = $_REQUEST['q'],现在$q将是&#34; something&#34;。

答案 1 :(得分:0)

<强> 1。首先,在第一个例子中,&#34;这个&#34 ;? (例如this.responseText)

很简单,&#34;这个&#34;求值为当前执行上下文的ThisBinding的值; ref

<强> 2。其次,为什么它是&#34; gethint.php?q =&#34; + str而不是简单的&#34; gethint.php&#34; (在xmlhttp.open()中)?

这不仅仅是将输入值传递给服务器以获得匹配结果。这将被视为GET方法

3.最后,$ q = $ _REQUEST [&#34; q&#34;];准确地告诉我?我知道某种变量被宣布但我不明白究竟是什么。

这是获取POST / GET方法的值的PHP代码。从 2 ,参数传递给服务。这可以使用$_REQUEST["q"]

从服务器访问