我知道有类似的问题,但是,我有一些问题,因为他们提到了一些可能性,我不确定哪一种最适合我的情况。
我有一个表单,其中有一个部分,您可以输入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()中)?
我还读到你可以使用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文档的名称。我没有包含那段代码,因为我知道那不是问题。
答案 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"]