我是PHP的新手,我(正在尝试)开发我的第一个AJAX代码......
我正在尝试从带有多个选项的选择中传递属性,每个选项都有自己独特的属性"值"这是一个字符串。
PHP文件获取值并对其执行某些操作(例如将其打印出来)。然后生成的文件返回到我的主HTML页面。
这是源代码......
这是我的 javaScript :
function showUser(myElement) {
var str = myElement.options[myElement.selectedIndex].getAttribute("values");
if (str == "") {
document.getElementById("myResponse").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("myResponse").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET","getuser.php?q="+encodeURIComponent(str),true);
xmlhttp.send();
}
}
我的 HTML 如下:
<form>
<select name="users" onchange="showUser(this)">
<option values="">Select a person:</option>
<option values="Rasmus Lerdorf">Creator of PHP</option>
<option values="Linus Torvalds">Developed Linux</option>
<option values="Dennis Ritchie">Developper of C</option>
</select>
</form>
<br>
<div id="myResponse"><b>Person info will be listed here...</b></div>
我的 PHP 是:
<?php
$q = intval($_GET['q']);
echo $q;
?>
我得到0而不是文本字符串,我的代码出了什么问题?
答案 0 :(得分:1)
傻傻的,
我从教程中复制并粘贴了一个基本示例,但我没有意识到PHP代码将通过GET发送的字符串转换为整数。
$q = intval($_GET['q']);
代码应为:
$q = $_GET['q'];
在我开发的早期阶段,我确实传递了一个整数,因此代码正在运行。
代码返回0而不是错误,因为失败时字符串的intval为0。
在这里写下这个问题,我意识到了错误......