繁体   English   中英

无法使用AJAX将数据传递到php文件

[英]Cannot get data passed to a php file using AJAX

我正在尝试将数据传递回服务器,然后使用回复来更新浏览器页面。 我的SELECT输入代码如下:

<select id ="MatchCaptain" name="MatchCaptain" onchange="findTeleNo(this.value)"
                        <?php 
                            $MC = $_SESSION["MatchCapt"];
                            player_load($MC);
                        ?>
                        >
                </select>

脚本代码如下:

<script>
    function findTeleNo(that){
    alert("I am an alert box!" + that);
    var xhttp;
    if (window.XMLHttpRequest) {
        // code for modern browsers
        xhttp = new XMLHttpRequest();
        } else {
        // code for old IE browsers
        xhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } 
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
          document.getElementById("TeleNo").value = this.responseText;
        }
      }
    };
    xhttp.open("GET", "findTeleNo.php?q=" + that, true);
    xhttp.send();
</script>

该脚本的目的是获取在下拉列表中选择的值(变量“ that”),并将其作为变量q提交到php文件。

并且PHP文件如下:

<?php
$MatchCaptain  = $_REQUEST["q"];
$teleNo = "";
  $db_handle = mysqli_connect(DB_SERVER, DB_USER, DB_PASS );
    $database = "matchmanagementDB";
    $db_found = mysqli_select_db($db_handle, $database);
    if ($db_found) {
    $SQL = "SELECT * FROM `playerstb` ORDER BY `Surname` ASC, `FirstName` ASC";
    $result = mysqli_query($db_handle, $SQL); 
    $ufullName = split_name($MatchCaptain);
    while ( $db_field = mysqli_fetch_assoc($result) ) {
        $uName = $db_field['FirstName'];
        $uName = trim($uName);
        $Surname = $db_field['Surname'];
        $Surname = trim($Surname);
        $fullName = $uName." ".$Surname;
        if ($fullName == $ufullName )
        {
            $teleNo = $db_field['TeleNo'];
            break;
        }
        }
}
echo $teleNo;

function split_name($name) {
    $name = trim($name);
    $last_name = (strpos($name, ' ') === false) ? '' : preg_replace('#.*\s([\w-]*)$#', '$1', $name);
    $first_name = trim( preg_replace('#'.$last_name.'#', '', $name ) );
    $ufullName = $first_name." ".$last_name;
    return $ufullName;
}
?>

php文件从网址请求q变量,并将其设为$ MatchCaptain。 这将是像Joe Bloggs这样的名字。 下一段代码连接到MySQL表,以提取玩家的姓氏和电话号码。 名字和姓氏串联在一起形成全名,然后与$ MatchCaptain进行比较。进行匹配时,变量$ teleNo设置为该玩家的电话号码。 echo语句将值重新提交给脚本。 我要更新的字段ID是;

<p><b>Telephone Number:&nbsp;</b> <span id="TeleNo"> <?php echo $_SESSION["TeleNo"]; ?></span></p>

脚本函数findTeleNo中的警报显示我已经输入了该函数,但是此后没有任何反应。 任何有关我如何进行此工作的帮助将不胜感激。

我已将脚本更改为

<script>
    function findTeleNo(that){
        var xhttp;
        if (window.XMLHttpRequest) {
            // code for modern browsers
            xhttp = new XMLHttpRequest();
            } else {
            // code for old IE browsers
            xhttp = new ActiveXObject("Microsoft.XMLHTTP");
            } 
            xhttp.open("GET", "findTeleNo.php?q=" + encodeURIComponent(that), true);
            xhttp.send();
        xhttp.onreadystatechange = function() {
            if (xhttp.readyState === 4) {
                if (xhttp.status === 200) {
                    // OK
                    alert('response:'+xhttp.responseText);
                    document.getElementById("TeleNo").innerHTML = this.responseText;
                    // here you can use the result (cli.responseText)
                } else {
                    // not OK
                    alert('failure!');
                }
            }
        };
    };

</script>

alert('response:'+xhttp.responseText);显示alert('response:'+xhttp.responseText); 是正确的,代码行

document.getElementById("TeleNo").innerHTML = this.responseText;

确实将响应打印到网页上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM